diff -Nru rabbitvcs-0.13.1/clients/cli/rabbitvcs rabbitvcs-0.15.0.5/clients/cli/rabbitvcs --- rabbitvcs-0.13.1/clients/cli/rabbitvcs 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/clients/cli/rabbitvcs 2011-02-08 13:05:59.000000000 +0000 @@ -24,16 +24,24 @@ import sys from optparse import OptionParser -from rabbitvcs.lib.helper import launch_ui_window +from rabbitvcs.util.helper import launch_ui_window usage = """Usage: rabbitvcs [path1] [path2] ... Available Modules ------------------ -about, add, annotate, applypatch, branch, browser, changes, checkmods, checkout, -cleanup, commit, createpatch, create, delete, diff, export, ignore, import, -lock, log, merge, properties, relocate, rename, resolve, revert, settings, -switch, unlock, update, updateto + +SVN: + about, add, annotate, applypatch, branch, browser, changes, checkmods, + checkout, cleanup, commit, createpatch, create, delete, diff, editconflicts, + export, ignore, import, lock, log, merge, properties, open, relocate, rename, + markresolved, revert, settings, switch, unlock, update, updateto + +Git: + about, add, annotate, applybranch, branches, changes, checkout, clean, + clone, commit, createpatch, create, delete, diff, editconflicts, export, + ignore, log, merge, open, push, rename, remotes, reset, revert, settings, + tags, update For module specific help type: rabbitvcs -h """ @@ -46,4 +54,11 @@ args.pop(0) # remove this file's path module = args.pop(0) +# If a filename/path is given, try to expand it to and absolute path +i = 0 +for arg in args: + if os.path.exists(arg): + args[i] = os.path.abspath(arg) + i += 1 + launch_ui_window(module, args) diff -Nru rabbitvcs-0.13.1/clients/gedit/rabbitvcs-plugin.py rabbitvcs-0.15.0.5/clients/gedit/rabbitvcs-plugin.py --- rabbitvcs-0.13.1/clients/gedit/rabbitvcs-plugin.py 2010-04-01 13:47:48.000000000 +0000 +++ rabbitvcs-0.15.0.5/clients/gedit/rabbitvcs-plugin.py 2010-12-28 19:59:33.000000000 +0000 @@ -24,22 +24,22 @@ import gtk import gedit -import rabbitvcs.lib.helper -from rabbitvcs.lib.vcs import create_vcs_instance -from rabbitvcs.lib.contextmenu import GtkFilesContextMenuConditions, \ +import rabbitvcs.util.helper +from rabbitvcs.vcs import create_vcs_instance +from rabbitvcs.util.contextmenu import GtkFilesContextMenuConditions, \ GtkFilesContextMenuCallbacks, MainContextMenu, MainContextMenuCallbacks, \ - MenuBuilder -from rabbitvcs.lib.contextmenuitems import * + MenuBuilder, GtkContextMenuCaller +from rabbitvcs.util.contextmenuitems import * # Menu item example, insert a new item in the Tools menu ui_str = """ - - - - - - + + + + + + @@ -63,7 +63,8 @@ - + + @@ -82,56 +83,140 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ -class RabbitVCSWindowHelper: +class RabbitVCSWindowHelper(GtkContextMenuCaller): _menu_paths = [ - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::Commit", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::Update", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::Checkout", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Diff_Menu", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Diff_Menu/RabbitVCS::Diff", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Diff_Menu/RabbitVCS::Diff_Previous_Revision", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Diff_Menu/RabbitVCS::Diff_Multiple", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool_Previous_Revision", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool_Multiple", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Diff_Menu/RabbitVCS::Show_Changes", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Show_Log", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Repo_Browser", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Check_For_Modifications", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Add", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Add_To_Ignore_List", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Add_To_Ignore_List/RabbitVCS::Ignore_By_Filename", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Add_To_Ignore_List/RabbitVCS::Ignore_By_File_Extension", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Update_To_Revision", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Rename", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Delete", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Revert", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Resolve", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Get_Lock", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Unlock", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Cleanup", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Annotate", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Export", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Create_Repository", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Import", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Branch_Tag", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Switch", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Merge", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Apply_Patch", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Create_Patch", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Properties", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::Settings", - "/MenuBar/ToolsMenu/RabbitVCSMenu/RabbitVCS::RabbitVCS/RabbitVCS::About" +# "/MenuBar/RabbitVCSMenu", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Commit", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Update", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Checkout", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Diff_Menu", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Diff_Menu/RabbitVCS::Diff", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Diff_Menu/RabbitVCS::Diff_Previous_Revision", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Diff_Menu/RabbitVCS::Diff_Multiple", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool_Previous_Revision", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool_Multiple", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Diff_Menu/RabbitVCS::Show_Changes", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Show_Log", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Repo_Browser", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Check_For_Modifications", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Add", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Add_To_Ignore_List", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Add_To_Ignore_List/RabbitVCS::Ignore_By_Filename", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Add_To_Ignore_List/RabbitVCS::Ignore_By_File_Extension", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Update_To_Revision", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Rename", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Delete", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Revert", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Edit_Conflicts", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Mark_Resolved", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Get_Lock", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Unlock", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Cleanup", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Annotate", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Export", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Create_Repository", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Import", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Branch_Tag", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Switch", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Merge", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Apply_Patch", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Create_Patch", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Svn/RabbitVCS::Properties", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Update", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Commit", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Push", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Clone", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Initialize_Repository", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Diff_Menu", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Diff_Menu/RabbitVCS::Diff", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Diff_Menu/RabbitVCS::Diff_Previous_Revision", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Diff_Menu/RabbitVCS::Diff_Multiple", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool_Previous_Revision", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Diff_Menu/RabbitVCS::Compare_Tool_Multiple", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Diff_Menu/RabbitVCS::Show_Changes", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Show_Log", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Stage", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Unstage", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Add_To_Ignore_List", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Add_To_Ignore_List/RabbitVCS::Ignore_By_Filename", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Add_To_Ignore_List/RabbitVCS::Ignore_By_File_Extension", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Rename", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Delete", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Revert", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Edit_Conflicts", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Clean", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Reset", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Checkout", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Branches", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Tags", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Remotes", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Export", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Merge", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Annotate", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Apply_Patch", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::RabbitVCS_Git/RabbitVCS::Create_Patch", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::Settings", + "/MenuBar/ExtraMenu_1/RabbitVCSMenu/RabbitVCS::About" ] _default_base_dir = os.path.expanduser("~") @@ -141,6 +226,9 @@ self._plugin = plugin self.base_dir = self._default_base_dir self._menubar_menu = None + self._menu_action = None + + self.vcs_client = create_vcs_instance() # Insert menu items self._insert_menu() @@ -159,10 +247,12 @@ # Get the GtkUIManager manager = self._window.get_ui_manager() - self._menubar_menu = GeditMenu(self, self.base_dir, [self._get_document_path()]) + self._menubar_menu = GeditMenu(self, self.vcs_client, self.base_dir, [self._get_document_path()]) + self._menu_action = gtk.Action( name="RabbitVCSMenu", label="RabbitVCS", tooltip="Excellent Version Control for Linux", stock_id=None ) self._action_group = gtk.ActionGroup("RabbitVCSActions") self._action_group = self._menubar_menu.get_action_group(self._action_group) + self._action_group.add_action( self._menu_action ) # Insert the action group manager.insert_action_group(self._action_group, 0) @@ -190,8 +280,7 @@ self._action_group.set_sensitive(document != None) if document != None: manager = self._window.get_ui_manager() - manager.get_widget("/MenuBar/ToolsMenu/RabbitVCSMenu").set_sensitive(True) - + manager.get_widget("/MenuBar/ExtraMenu_1/RabbitVCSMenu").set_sensitive(True) self._menubar_menu.set_paths([self._get_document_path()]) self._determine_menu_sensitivity([self._get_document_path()]) @@ -199,12 +288,15 @@ handler_id = view.connect("populate-popup", self.on_view_populate_popup) view.set_data(id_name, [handler_id]) + def disconnect_view(self, view, id_name): + view.disconnect(view.get_data(id_name)[0]) + def on_view_populate_popup(self, view, menu): separator = gtk.SeparatorMenuItem() menu.append(separator) separator.show() - context_menu = GeditMainContextMenu(self, self.base_dir, [self._get_document_path()]).get_menu() + context_menu = GeditMainContextMenu(self, self.vcs_client, self.base_dir, [self._get_document_path()]).get_menu() for context_menu_item in context_menu: menu.append(context_menu_item) @@ -242,16 +334,7 @@ def reload_settings(self, proc): self.update_ui() - def rescan_after_process_exit(self, proc, paths): - self.update_ui() - - def execute_after_process_exit(self, proc): - self.update_ui() - - def reload_treeview(self): - self.update_ui() - - def reload_treeview_threaded(self): + def on_context_menu_command_finished(self): self.update_ui() class RabbitVCSPlugin(gedit.Plugin): @@ -295,8 +378,8 @@ self._instances[window].connect_view(tab.get_view(), self.id_name) def on_window_tab_removed(self, window, tab): - pass - + if window in self._instances: + self._instances[window].disconnect_view(tab.get_view(), self.id_name) class MenuIgnoreByFilename(MenuItem): identifier = "RabbitVCS::Ignore_By_Filename" @@ -360,6 +443,9 @@ default_name = MenuItem.make_default_name(item.identifier) action = RabbitVCSAction(item.identifier, item.label, item.tooltip, item.icon) + + if item.icon and hasattr(action, "set_icon_name"): + action.set_icon_name(item.icon) if item.callback: if item.callback_args: @@ -386,11 +472,14 @@ return function class GeditMenu: - def __init__(self, caller, base_dir, paths): + def __init__(self, caller, vcs_client, base_dir, paths): """ @param caller: The calling object @type caller: RabbitVCS extension + @param vcs_client: The vcs client + @type vcs_client: rabbitvcs.vcs + @param base_dir: The curent working directory @type base_dir: string @@ -407,7 +496,7 @@ self.caller = caller self.paths = paths self.base_dir = base_dir - self.vcs_client = create_vcs_instance() + self.vcs_client = vcs_client self.conditions = GtkFilesContextMenuConditions(self.vcs_client, self.paths) @@ -419,9 +508,14 @@ ) self.structure = [ + MenuRabbitVCSSvn, + MenuRabbitVCSGit, MenuCheckout, MenuUpdate, MenuCommit, + MenuPush, + MenuInitializeRepository, + MenuClone, MenuRabbitVCS, MenuDiffMenu, MenuDiff, @@ -435,19 +529,27 @@ MenuRepoBrowser, MenuCheckForModifications, MenuAdd, + MenuStage, + MenuUnstage, MenuAddToIgnoreList, MenuUpdateToRevision, MenuRename, MenuDelete, MenuRevert, - MenuResolve, + MenuEditConflicts, + MenuMarkResolved, MenuRelocate, MenuGetLock, MenuUnlock, + MenuClean, + MenuReset, MenuCleanup, MenuExport, MenuCreateRepository, MenuImport, + MenuBranches, + MenuTags, + MenuRemotes, MenuBranchTag, MenuSwitch, MenuMerge, @@ -502,12 +604,15 @@ return items class GeditMainContextMenu(MainContextMenu): - def __init__(self, caller, base_dir, paths=[], + def __init__(self, caller, vcs_client, base_dir, paths=[], conditions=None, callbacks=None): """ @param caller: The calling object @type caller: RabbitVCS extension + @param vcs_client: The vcs client + @type vcs_client: rabbitvcs.vcs + @param base_dir: The curent working directory @type base_dir: string @@ -524,7 +629,7 @@ self.caller = caller self.paths = paths self.base_dir = base_dir - self.vcs_client = create_vcs_instance() + self.vcs_client = vcs_client self.conditions = conditions if self.conditions is None: @@ -545,18 +650,11 @@ # ContextMenuItems item. The second element is either None when there # is no submenu, or a recursive list of tuples for desired submenus. self.structure = [ - (MenuDebug, [ - (MenuBugs, None), - (MenuDebugShell, None), - (MenuRefreshStatus, None), - (MenuDebugRevert, None), - (MenuDebugInvalidate, None), - (MenuDebugAddEmblem, None) - ]), - (MenuCheckout, None), (MenuUpdate, None), (MenuCommit, None), - (MenuRabbitVCS, [ + (MenuPush, None), + (MenuRabbitVCSSvn, [ + (MenuCheckout, None), (MenuDiffMenu, [ (MenuDiff, None), (MenuDiffPrevRev, None), @@ -577,7 +675,8 @@ (MenuRename, None), (MenuDelete, None), (MenuRevert, None), - (MenuResolve, None), + (MenuEditConflicts, None), + (MenuMarkResolved, None), (MenuRelocate, None), (MenuGetLock, None), (MenuUnlock, None), @@ -597,7 +696,47 @@ (MenuApplyPatch, None), (MenuProperties, None), (MenuSeparator, None), - (MenuHelp, None), + (MenuSettings, None), + (MenuAbout, None) + ]), + (MenuRabbitVCSGit, [ + (MenuClone, None), + (MenuInitializeRepository, None), + (MenuSeparator, None), + (MenuDiffMenu, [ + (MenuDiff, None), + (MenuDiffPrevRev, None), + (MenuDiffMultiple, None), + (MenuCompareTool, None), + (MenuCompareToolPrevRev, None), + (MenuCompareToolMultiple, None), + (MenuShowChanges, None), + ]), + (MenuShowLog, None), + (MenuStage, None), + (MenuUnstage, None), + (MenuAddToIgnoreList, ignore_items), + (MenuSeparator, None), + (MenuRename, None), + (MenuDelete, None), + (MenuRevert, None), + (MenuEditConflicts, None), + (MenuClean, None), + (MenuReset, None), + (MenuCheckout, None), + (MenuSeparator, None), + (MenuBranches, None), + (MenuTags, None), + (MenuRemotes, None), + (MenuSeparator, None), + (MenuExport, None), + (MenuMerge, None), + (MenuSeparator, None), + (MenuAnnotate, None), + (MenuSeparator, None), + (MenuCreatePatch, None), + (MenuApplyPatch, None), + (MenuSeparator, None), (MenuSettings, None), (MenuAbout, None) ]) diff -Nru rabbitvcs-0.13.1/clients/nautilus/RabbitVCS.py rabbitvcs-0.15.0.5/clients/nautilus/RabbitVCS.py --- rabbitvcs-0.13.1/clients/nautilus/RabbitVCS.py 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/clients/nautilus/RabbitVCS.py 2010-12-23 16:14:45.000000000 +0000 @@ -1,21 +1,21 @@ # -# This is an extension to the Nautilus file manager to allow better +# This is an extension to the Nautilus file manager to allow better # integration with the Subversion source control system. -# +# # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij # Copyright (C) 2008-2008 by Adam Plumb -# +# # RabbitVCS 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 2 of the License, or # (at your option) any later version. -# +# # RabbitVCS 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 RabbitVCS; If not, see . # @@ -23,20 +23,20 @@ """ Our module for everything related to the Nautilus extension. - + """ from __future__ import with_statement def log_all_exceptions(type, value, tb): import sys, traceback - from rabbitvcs.lib.log import Log - log = Log("rabbitvcs.lib.extensions.nautilus.RabbitVCS") + from rabbitvcs.util.log import Log + log = Log("rabbitvcs.util.extensions.nautilus.RabbitVCS") log.exception_info("Error caught by master exception hook!", (type, value, tb)) - + text = ''.join(traceback.format_exception(type, value, tb, limit=None)) - + try: import rabbitvcs.ui.dialog rabbitvcs.ui.dialog.ErrorNotification(text) @@ -45,7 +45,7 @@ " to display error dialog.") log.exception(ex) raise - + sys.__excepthook__(type, value, tb) # import sys @@ -55,7 +55,6 @@ import os.path from os.path import isdir, isfile, realpath, basename import datetime -import threading import gnomevfs import nautilus @@ -63,25 +62,27 @@ import gobject import gtk -from rabbitvcs.lib.vcs.svn import SVN +from rabbitvcs.vcs import VCS +import rabbitvcs.vcs.status -from rabbitvcs.util.vcs import * -from rabbitvcs.lib.helper import launch_ui_window, launch_diff_tool -from rabbitvcs.lib.helper import get_file_extension, get_common_directory -from rabbitvcs.lib.helper import pretty_timedelta -from rabbitvcs.lib.decorators import timeit, disable -from rabbitvcs.lib.contextmenu import MenuBuilder, MainContextMenu, SEPARATOR +from rabbitvcs.util.helper import launch_ui_window, launch_diff_tool +from rabbitvcs.util.helper import get_file_extension, get_common_directory +from rabbitvcs.util.helper import pretty_timedelta +from rabbitvcs.util.decorators import timeit, disable +from rabbitvcs.util.contextmenu import MenuBuilder, MainContextMenu, SEPARATOR, ContextMenuConditions import rabbitvcs.ui import rabbitvcs.ui.property_page -from rabbitvcs.lib.log import Log, reload_log_settings -log = Log("rabbitvcs.lib.extensions.nautilus.RabbitVCS") +from rabbitvcs.util.log import Log, reload_log_settings +log = Log("rabbitvcs.util.extensions.nautilus.RabbitVCS") from rabbitvcs import gettext _ = gettext.gettext -from rabbitvcs.lib.settings import SettingsManager +from rabbitvcs import version as EXT_VERSION + +from rabbitvcs.util.settings import SettingsManager settings = SettingsManager() import rabbitvcs.services.service @@ -89,389 +90,365 @@ class RabbitVCS(nautilus.InfoProvider, nautilus.MenuProvider, nautilus.ColumnProvider, nautilus.PropertyPageProvider): - """ + """ This is the main class that implements all of our awesome features. - + """ - - EMBLEMS = rabbitvcs.ui.STATUS_EMBLEMS - - #: A list of statuses which count as modified (for a directory) in - #: TortoiseSVN emblem speak. - MODIFIED_STATUSES = [ - SVN.STATUS["added"], - SVN.STATUS["deleted"], - SVN.STATUS["replaced"], - SVN.STATUS["modified"], - SVN.STATUS["missing"] - ] - - MODIFIED_TEXT_STATUSES = [ - "added", - "deleted", - "replaced", - "modified", - "missing" - ] - + #: This is our lookup table for C{NautilusVFSFile}s which we need for attaching #: emblems. This is mostly a workaround for not being able to turn a path/uri #: into a C{NautilusVFSFile}. It looks like::: - #: + #: #: nautilusVFSFile_table = { #: "/foo/bar/baz": - #: + #: #: } - #: + #: #: Keeping track of C{NautilusVFSFile}s is a little bit complicated because #: when an item is moved (renamed) C{update_file_info} doesn't get called. So #: we also add C{NautilusVFSFile}s to this table from C{get_file_items} etc. + # FIXME: this may be the source of the memory hogging seen in the extension + # script itself. nautilusVFSFile_table = {} - - #: Without an actual status monitor it's not possible to just keep - #: track of stuff that happens (e.g. a commit happens, files are added, - #: such things). So at the moment we just add all interesting items - #: to this list. - monitored_files = [] - + #: This is in case we want to permanently enable invalidation of the status - #: checker info. We put a path here before we invalidate the item, so that - #: we don't enter an endless loop when updating the status. - #: The callback should acquire this lock when pushing the path to this. + #: checker info. always_invalidate = True - - #: When we get the statuses from the callback, but them here for further - #: use. There is a possible memory problem here if we put a lot of data in - #: this - even when it's removed, Python may not release the memory. I do - #: not know this for sure. - #: This is of the form: [("path/to", {...status dict...}), ...] - paths_from_callback = [] - - - #: It appears that the "update_file_info" call that is triggered by the - #: "invalidate_extension_info" in the callback function happens - #: synchronously (ie. in the same thread). However, given the nature of the - #: python/nautilus extensions module, I'm not sure how reliable this is. - #: It's certainly supported by debugging statements, but maybe it will - #: change in the future? Who knows. This should work for both the current - #: situation, and the possibility that they are asynchronous. - callback_paths_lock = threading.RLock() - - #: A list of statuses that we want to keep track of for when a process - #: might have done something. - STATUSES_TO_MONITOR = copy.copy(MODIFIED_TEXT_STATUSES) - STATUSES_TO_MONITOR.extend([ - "unversioned", - # When doing a checkout Nautilus will notice a directory being - # added and call update_file_info, but at that stage the - # checkout likely hasn't completed yet and the status will be: - "incomplete" - ]) - + + #: When we get the statuses from the callback, put them here for further + #: use. This is of the form: [("path/to", {...status dict...}), ...] + statuses_from_callback = [] + def __init__(self): - threading.currentThread().setName("RabbitVCS extension thread") - # Create a global client we can use to do VCS related stuff - self.vcs_client = SVN() + self.vcs_client = VCS() + + self.status_checker = StatusChecker() + + self.status_checker.assert_version(EXT_VERSION) - self.status_checker = StatusChecker(self.cb_status) + self.items_cache = {} def get_columns(self): """ Return all the columns we support. - + """ - + return ( nautilus.Column( "RabbitVCS::status_column", "status", - _("Status"), + _("RVCS Status"), "" ), nautilus.Column( "RabbitVCS::revision_column", "revision", - _("Revision"), - "" - ), - nautilus.Column( - "RabbitVCS::url_column", - "url", - _("URL"), + _("RVCS Revision"), "" ), nautilus.Column( "RabbitVCS::author_column", "author", - _("Author"), + _("RVCS Author"), "" ), nautilus.Column( "RabbitVCS::age_column", "age", - _("Age"), + _("RVCS Age"), "" ) ) - - #~ @timeit + def update_file_info(self, item): """ - + C{update_file_info} is called only when: - + - When you enter a directory (once for each item but only when the item was modified since the last time it was listed) - When you refresh (once for each item visible) - When an item viewable from the current window is created or modified - + This is insufficient for our purpose because: - - - You're not notified about items you don't see (which is needed to + + - You're not notified about items you don't see (which is needed to keep the emblem for the directories above the item up-to-date) - + @type item: NautilusVFSFile - @param item: - + @param item: + """ - if not self.valid_uri(item.get_uri()): return - path = realpath(unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8")) + enable_emblems = bool(int(settings.get("general", "enable_emblems"))) + enable_attrs = bool(int(settings.get("general", "enable_attributes"))) - # log.debug("update_file_info() called for %s" % path) + if not (enable_emblems or enable_attrs): return nautilus.OPERATION_COMPLETE + + if not self.valid_uri(item.get_uri()): return nautilus.OPERATION_FAILED + path = unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8") + + # log.debug("update_file_info() called for %s" % path) + + invalidate = False + if path in self.nautilusVFSFile_table: + invalidate = True + # Always replace the item in the table with the one we receive, because # for example if an item is deleted and recreated the NautilusVFSFile # we had before will be invalid (think pointers and such). self.nautilusVFSFile_table[path] = item - + # This check should be pretty obvious :-) # TODO: how come the statuses for a few directories are incorrect # when we remove this line (detected as working copies, even though # they are not)? That shouldn't happen. is_in_a_or_a_working_copy = self.vcs_client.is_in_a_or_a_working_copy(path) - if not is_in_a_or_a_working_copy: return - + if not is_in_a_or_a_working_copy: return nautilus.OPERATION_COMPLETE + # Do our magic... - + # I have added extra logic in cb_status, using a list # (paths_from_callback) that should allow us to work around this for - # now. But it'd be good to have an actual status monitor. - - # Useful for figuring out order of calls. See "cb_status". - # log.debug("%s: In update_status" % threading.currentThread()) - + # now. But it'd be good to have an actual status monitor. + found = False - - with self.callback_paths_lock: - - for idx in xrange(len(self.paths_from_callback)): - found = (str(self.paths_from_callback[idx][0]) == str(path)) - if found: break - - if found: # We're here because we were triggered by a callback - (cb_path, single_status, summary) = self.paths_from_callback[idx] - del self.paths_from_callback[idx] - + status = None + # Could replace with (st for st in self.... if st.path ...).next() + # Need to catch exception + for idx in xrange(len(self.statuses_from_callback)): + found = (self.statuses_from_callback[idx].path) == path + if found: break + + if found: # We're here because we were triggered by a callback + status = self.statuses_from_callback[idx] + del self.statuses_from_callback[idx] + # Don't bother the checker if we already have the info from a callback - if not found: - (single_status, summary) = \ + status = \ self.status_checker.check_status(path, recurse=True, summary=True, - callback=True, - invalidate=self.always_invalidate) + callback=self.cb_status, + invalidate=invalidate) - # log.debug("US Thread: %s" % threading.currentThread()) - - # summary = get_summarized_status_both(path, statuses) - # single_status = {path: statuses[path]} + # FIXME: when did this get disabled? + if enable_attrs: self.update_columns(item, path, status) + if enable_emblems: self.update_status(item, path, status) -# from pprint import pformat -# log.debug("\n\tExtension: asked for summary [%s]\n\tGot paths:\n%s" % (path, pformat(summary.keys()))) -# log.debug("\n\tExtension: asked for single [%s]\n\tGot paths:\n%s" % (path, pformat(single_status.keys()))) - - # TODO: using pysvn directly because I don't like the current - # SVN class. - client = pysvn.Client() - client_info = client.info(path) + return nautilus.OPERATION_COMPLETE - assert summary.has_key(path), "Path [%s] not in status summary!" % summary - assert single_status.has_key(path), "Path [%s] not in single status!" % path - - # if bool(int(settings.get("general", "enable_attributes"))): self.update_columns(item, path, single_status, client_info) - if bool(int(settings.get("general", "enable_emblems"))): self.update_status(item, path, summary, client_info) - - def update_columns(self, item, path, statuses, client_info): + def update_columns(self, item, path, status): """ Update the columns (attributes) for a given Nautilus item, filling them in with information from the version control server. """ - # log.debug("update_colums called for %s" % path) + + revision = "" + if status.revision: + revision = str(status.revision) + + age = "" + if status.date: + age = pretty_timedelta( + datetime.datetime.fromtimestamp(status.date), + datetime.datetime.now() + ) + + author = "" + if status.author: + author = str(status.author) values = { - "status": "", - "revision": "", - "url": "", - "author": "", - "age": "" + "status": status.simple_content_status(), + "revision": revision, + "author": author, + "age": age } - try: - if client_info is None: - # It IS possible to reach here: ignored files satisfy the "is in - # WC" condition, but aren't themselves versioned! - log.debug("Unversioned file in WC: %s" % path) - values["status"] = SVN.STATUS_REVERSE[pysvn.wc_status_kind.unversioned] - else: - info = client_info.data - # FIXME: replace - # status = client.status(path, recurse=False)[-1].data - status = statuses[path] - - values["status"] = status["text_status"] - - # If the text status shows it isn't modified, but the properties - # DO, let them take priority. - if status["text_status"] not in RabbitVCS.MODIFIED_TEXT_STATUSES \ - and status["prop_status"] in RabbitVCS.MODIFIED_TEXT_STATUSES: - values["status"] = status["prop_status"] - - values["revision"] = str(info["commit_revision"].number) - values["url"] = str(info["url"]) - values["author"] = str(info["commit_author"]) - values["age"] = str( - pretty_timedelta( - datetime.datetime.fromtimestamp(info["commit_time"]), - datetime.datetime.now() - ) - ) - except: - log.exception() - for key, value in values.items(): item.add_string_attribute(key, value) - - def update_status(self, item, path, summary, client_info): - # If we are able to set an emblem that means we have a local status - # available. The StatusMonitor will keep us up-to-date through the - # C{cb_status} callback. - # Warning! If you use invalidate=True here, it will set up an endless - # loop: - # 1. Update requests status (inv=True) - # 2. Status checker returns "calculating" - # 3. Status checker calculates status, calls callback - # 4. Callback triggers update - - # Path == first index or last for old system? - if summary[path]["text_status"] == "calculating": - item.add_emblem(self.EMBLEMS["calculating"]) - else: - single_status = make_single_status(summary[path]) - if single_status in self.EMBLEMS: - item.add_emblem(self.EMBLEMS[single_status]) - + def update_status(self, item, path, status): + if status.summary in rabbitvcs.ui.STATUS_EMBLEMS: + item.add_emblem(rabbitvcs.ui.STATUS_EMBLEMS[status.summary]) + #~ @disable # @timeit - def get_file_items(self, window, items): + # FIXME: this is a bottleneck. See generate_statuses() in + # MainContextMenuConditions. + def get_file_items_full(self, provider, window, items): """ Menu activated with items selected. Nautilus also calls this function when rendering submenus, even though this is not needed since the entire menu has already been returned. - - Note that calling C{nautilusVFSFile.invalidate_extension_info()} will + + Note that calling C{nautilusVFSFile.invalidate_extension_info()} will also cause get_file_items to be called. - + @type window: NautilusNavigationWindow @param window: - + @type items: list of NautilusVFSFile @param items: - + @rtype: list of MenuItems @return: The context menu entries to add to the menu. - + """ + + paths = [] + for item in items: + if self.valid_uri(item.get_uri()): + path = unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8") + paths.append(path) + self.nautilusVFSFile_table[path] = item + + if len(paths) == 0: return [] + # log.debug("get_file_items_full() called") + + paths_str = "-".join(paths) + + conditions_dict = None + if paths_str in self.items_cache: + conditions_dict = self.items_cache[paths_str] + if conditions_dict and conditions_dict != "in-progress": + conditions = NautilusMenuConditions(conditions_dict) + menu = NautilusMainContextMenu(self, window.get_data("base_dir"), paths, conditions).get_menu() + return menu + + if conditions_dict != "in-progress": + self.status_checker.generate_menu_conditions_async(provider, window.get_data("base_dir"), paths, self.update_file_items) + self.items_cache[path] = "in-progress" + + return () + + def get_file_items(self, window, items): paths = [] for item in items: if self.valid_uri(item.get_uri()): - path = realpath(unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8")) + path = unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8") paths.append(path) self.nautilusVFSFile_table[path] = item if len(paths) == 0: return [] + # log.debug("get_file_items() called") + return NautilusMainContextMenu(self, window.get_data("base_dir"), paths).get_menu() - + + def update_file_items(self, provider, base_dir, paths, conditions_dict): + paths_str = "-".join(paths) + self.items_cache[paths_str] = conditions_dict + self.emit_items_updated_signal(provider) + #~ @disable - @timeit - def get_background_items(self, window, item): + # This is useful for profiling. Rename it to "get_background_items" and then + # rename the real function "get_background_items_real". + def get_background_items_profile(self, window, item): + import cProfile + import rabbitvcs.util.helper + + path = unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), + "utf-8").replace("/", ":") + + profile_data_file = os.path.join( + rabbitvcs.util.helper.get_home_folder(), + "checkerservice_%s.stats" % path) + + prof = cProfile.Profile() + retval = prof.runcall(self.get_background_items_real, window, item) + prof.dump_stats(profile_data_file) + log.debug("Dumped: %s" % profile_data_file) + return retval + + def get_background_items_full(self, provider, window, item): """ Menu activated on entering a directory. Builds context menu for File menu and for window background. - + @type window: NautilusNavigationWindow @param window: - + @type item: NautilusVFSFile @param item: - + @rtype: list of MenuItems @return: The context menu entries to add to the menu. - + """ - + if not self.valid_uri(item.get_uri()): return - path = realpath(unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8")) + path = unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8") self.nautilusVFSFile_table[path] = item - + + # log.debug("get_background_items_full() called") + + conditions_dict = None + if path in self.items_cache: + conditions_dict = self.items_cache[path] + if conditions_dict and conditions_dict != "in-progress": + conditions = NautilusMenuConditions(conditions_dict) + menu = NautilusMainContextMenu(self, path, [path], conditions).get_menu() + return menu + + window.set_data("base_dir", path) + + if conditions_dict != "in-progress": + self.status_checker.generate_menu_conditions_async(provider, path, [path], self.update_background_items) + self.items_cache[path] = "in-progress" + + return () + + def get_background_items(self, window, item): + if not self.valid_uri(item.get_uri()): return + path = unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8") + self.nautilusVFSFile_table[path] = item + # log.debug("get_background_items() called") window.set_data("base_dir", path) return NautilusMainContextMenu(self, path, [path]).get_menu() - + + def update_background_items(self, provider, base_dir, paths, conditions_dict): + paths_str = "-".join(paths) + conditions = NautilusMenuConditions(conditions_dict) + self.items_cache[paths_str] = conditions_dict + self.emit_items_updated_signal(provider) + # # Helper functions # - + def valid_uri(self, uri): """ Check whether or not it's a good idea to have RabbitVCS do its magic for this URI. Some examples of URI schemes: - + x-nautilus-desktop:/// # e.g. mounted devices on the desktop - + """ - + if not uri.startswith("file://"): return False - + return True - + # # Some methods to help with keeping emblems up-to-date # - + def rescan_after_process_exit(self, proc, paths): - """ - Rescans all of the items on our C{monitored_files} list after the - process specified by C{proc} completes. Also checks the paths - that were passed. - - TODO: the monitored_files list could grow quite large if somebody - browses a lot of working copies. It probably won't affect anything - (most importantly performance) all that negatively. - - """ - + def do_check(): # We'll check the paths first (these were the paths that - # were originally passed along to the context menu). + # were originally passed along to the context menu). # # This is needed among other things for: # @@ -482,11 +459,11 @@ self.status_checker.check_status(path, recurse=True, invalidate=True, - callback=True, + callback=self.cb_status, summary=True) - + self.execute_after_process_exit(proc, do_check) - + def execute_after_process_exit(self, proc, func=None): def is_process_still_alive(): @@ -494,57 +471,56 @@ # First we need to see if the commit process is still running retval = proc.poll() - + log.debug("%s" % retval) - + still_going = (retval is None) if not still_going and callable(func): func() - + return still_going # Add our callback function on a 1 second timeout gobject.timeout_add_seconds(1, is_process_still_alive) - - # + + # # Some other methods - # - + # + def reload_settings(self, proc): """ Used to re-load settings after the settings dialog has been closed. - + FIXME: This probably doesn't belong here, ideally the settings manager - does this itself and make sure everything is reloaded properly + does this itself and make sure everything is reloaded properly after the settings dialogs saves. """ - + def do_reload_settings(): globals()["settings"] = SettingsManager() - globals()["log"] = reload_log_settings()("rabbitvcs.lib.extensions.nautilus") + globals()["log"] = reload_log_settings()("rabbitvcs.util.extensions.nautilus") log.debug("Re-scanning settings") - + self.execute_after_process_exit(proc, do_reload_settings) - - - # + + + # # Callbacks - # - - def cb_status(self, path, statuses): + # + + def cb_status(self, status): """ - This is the callback that C{StatusMonitor} calls. - + This is the callback that C{StatusMonitor} calls. + @type path: string @param path: The path of the item something interesting happened to. - - @type statuses: list of tuples of (path, status) - @param statuses: The statuses (we do nothing with this now) + + @type statuses: list of status objects + @param statuses: The statuses """ - # log.debug("CB Thread: %s" % threading.currentThread()) - if path in self.nautilusVFSFile_table: - item = self.nautilusVFSFile_table[path] + if status.path in self.nautilusVFSFile_table: + item = self.nautilusVFSFile_table[status.path] # We need to invalidate the extension info for only one reason: # # - Invalidating the extension info will cause Nautilus to remove all @@ -552,64 +528,66 @@ # (with ourselves, we'd still have some with other extensions). # # After invalidating C{update_file_info} applies the correct emblem. - # Since invalidation triggers an "update_file_info" call, we can # tell it NOT to invalidate the status checker path. - with self.callback_paths_lock: - from pprint import pformat - (single, summary) = statuses - self.paths_from_callback.append((path, single, summary)) - # These are useful to establish whether the "update_status" call - # happens INSIDE this next call, or later, or in another thread. - # log.debug("%s: Invalidating..." % threading.currentThread()) - item.invalidate_extension_info() - # log.debug("%s: Done invalidate call." % threading.currentThread()) + self.statuses_from_callback.append(status) + # NOTE! There is a call to "update_file_info" WITHIN the call to + # invalidate_extension_info() - beware recursion! + item.invalidate_extension_info() + if status.path in self.items_cache: + del self.items_cache[status.path] else: - log.debug("Path [%s] not found in file table") + log.debug("Path [%s] not found in file table" % status.path) def get_property_pages(self, items): paths = [] - + for item in items: if self.valid_uri(item.get_uri()): - path = realpath(unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8")) - paths.append(path) - self.nautilusVFSFile_table[path] = item + path = unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), "utf-8") + + if self.vcs_client.is_in_a_or_a_working_copy(path): + paths.append(path) + self.nautilusVFSFile_table[path] = item if len(paths) == 0: return [] - label = rabbitvcs.ui.property_page.PropertyPageLabel().get_widget() - page = rabbitvcs.ui.property_page.PropertyPage(paths).get_widget() - + label = rabbitvcs.ui.property_page.PropertyPageLabel(claim_domain=False).get_widget() + page = rabbitvcs.ui.property_page.PropertyPage(paths, claim_domain=False).get_widget() + ppage = nautilus.PropertyPage('RabbitVCS::PropertyPage', label, - page) - + page) + return [ppage] - -from rabbitvcs.lib.contextmenuitems import * + +from rabbitvcs.util.contextmenuitems import * class NautilusContextMenu(MenuBuilder): """ Provides a standard Nautilus context menu (ie. a list of "nautilus.MenuItem"s). """ - + signal = "activate" - + def make_menu_item(self, item, id_magic): return item.make_nautilus_menu_item(id_magic) - + def attach_submenu(self, menu_node, submenu_list): submenu = nautilus.Menu() menu_node.set_submenu(submenu) [submenu.append_item(item) for item in submenu_list] - + def top_level_menu(self, items): return items +class NautilusMenuConditions(ContextMenuConditions): + def __init__(self, path_dict): + self.path_dict = path_dict + class NautilusMainContextMenu(MainContextMenu): def get_menu(self): - return NautilusContextMenu(self.structure, self.conditions, self.callbacks).menu \ No newline at end of file + return NautilusContextMenu(self.structure, self.conditions, self.callbacks).menu diff -Nru rabbitvcs-0.13.1/clients/nautilus/README rabbitvcs-0.15.0.5/clients/nautilus/README --- rabbitvcs-0.13.1/clients/nautilus/README 2010-01-29 14:41:58.000000000 +0000 +++ rabbitvcs-0.15.0.5/clients/nautilus/README 2011-11-04 16:36:08.000000000 +0000 @@ -14,6 +14,9 @@ To install for a single user, copy RabbitVCS.py to: ~/.nautilus/python-extensions + + If you are using nautilus-python >= 1.0 you should install to: + ~/.local/share/nautilus-python/extensions In both cases, you may need to create the python/python-extensions folder. diff -Nru rabbitvcs-0.13.1/clients/nautilus-3.0/RabbitVCS.py rabbitvcs-0.15.0.5/clients/nautilus-3.0/RabbitVCS.py --- rabbitvcs-0.13.1/clients/nautilus-3.0/RabbitVCS.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/clients/nautilus-3.0/RabbitVCS.py 2011-11-09 19:07:18.000000000 +0000 @@ -0,0 +1,660 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2008 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +""" + +Our module for everything related to the Nautilus extension. + +""" +from __future__ import with_statement + +def log_all_exceptions(type, value, tb): + import sys, traceback + from rabbitvcs.util.log import Log + log = Log("rabbitvcs.util.extensions.Nautilus.RabbitVCS") + log.exception_info("Error caught by master exception hook!", + (type, value, tb)) + + text = ''.join(traceback.format_exception(type, value, + tb, limit=None)) + + try: + import rabbitvcs.ui.dialog + rabbitvcs.ui.dialog.ErrorNotification(text) + except Exception, ex: + log.exception("Additional exception when attempting" + " to display error dialog.") + log.exception(ex) + raise + + sys.__excepthook__(type, value, tb) + +# import sys +# sys.excepthook = log_all_exceptions + +import copy + +import os +os.environ["NAUTILUS_PYTHON_REQUIRE_GTK3"] = "1" + +import os.path +from os.path import isdir, isfile, realpath, basename +import datetime + +from gi.repository import Nautilus, GObject, Gtk, GdkPixbuf + +import pysvn + +from rabbitvcs.vcs import VCS +import rabbitvcs.vcs.status + +from rabbitvcs.util.helper import launch_ui_window, launch_diff_tool +from rabbitvcs.util.helper import get_file_extension, get_common_directory +from rabbitvcs.util.helper import pretty_timedelta + +from rabbitvcs.util.decorators import timeit, disable + +from rabbitvcs.util.contextmenu import MenuBuilder, MainContextMenu, SEPARATOR, ContextMenuConditions + +import rabbitvcs.ui +import rabbitvcs.ui.property_page + +from rabbitvcs.util.log import Log, reload_log_settings +log = Log("rabbitvcs.util.extensions.Nautilus.RabbitVCS") + +from rabbitvcs import gettext, get_icon_path +_ = gettext.gettext + +from rabbitvcs import version as EXT_VERSION + +from rabbitvcs.util.settings import SettingsManager +settings = SettingsManager() + +import rabbitvcs.services.service +from rabbitvcs.services.checkerservice import StatusCheckerStub as StatusChecker + +class RabbitVCS(Nautilus.InfoProvider, Nautilus.MenuProvider, + Nautilus.ColumnProvider, Nautilus.PropertyPageProvider, GObject.GObject): + """ + This is the main class that implements all of our awesome features. + + """ + + #: This is our lookup table for C{NautilusVFSFile}s which we need for attaching + #: emblems. This is mostly a workaround for not being able to turn a path/uri + #: into a C{NautilusVFSFile}. It looks like::: + #: + #: nautilusVFSFile_table = { + #: "/foo/bar/baz": + #: + #: } + #: + #: Keeping track of C{NautilusVFSFile}s is a little bit complicated because + #: when an item is moved (renamed) C{update_file_info} doesn't get called. So + #: we also add C{NautilusVFSFile}s to this table from C{get_file_items} etc. + # FIXME: this may be the source of the memory hogging seen in the extension + # script itself. + nautilusVFSFile_table = {} + + #: This is in case we want to permanently enable invalidation of the status + #: checker info. + always_invalidate = True + + #: When we get the statuses from the callback, put them here for further + #: use. This is of the form: [("path/to", {...status dict...}), ...] + statuses_from_callback = [] + + def get_local_path(self, path): + return path.replace("file://", "") + + def __init__(self): + factory = Gtk.IconFactory() + + rabbitvcs_icons = [ + "scalable/actions/rabbitvcs-settings.svg", + "scalable/actions/rabbitvcs-export.svg", + "scalable/actions/rabbitvcs-properties.svg", + "scalable/actions/rabbitvcs-show_log.svg", + "scalable/actions/rabbitvcs-delete.svg", + "scalable/actions/rabbitvcs-run.svg", + "scalable/actions/rabbitvcs-unlock.svg", + "scalable/actions/rabbitvcs-dbus.svg", + "scalable/actions/rabbitvcs-rename.svg", + "scalable/actions/rabbitvcs-help.svg", + "scalable/actions/rabbitvcs-update.svg", + "scalable/actions/rabbitvcs-diff.svg", + "scalable/actions/rabbitvcs-resolve.svg", + "scalable/actions/rabbitvcs-about.svg", + "scalable/actions/rabbitvcs-add.svg", + "scalable/actions/rabbitvcs-changes.svg", + "scalable/actions/rabbitvcs-createpatch.svg", + "scalable/actions/rabbitvcs-merge.svg", + "scalable/actions/rabbitvcs-drive.svg", + "scalable/actions/rabbitvcs-stop.svg", + "scalable/actions/rabbitvcs-checkout.svg", + "scalable/actions/rabbitvcs-import.svg", + "scalable/actions/rabbitvcs-branch.svg", + "scalable/actions/rabbitvcs-refresh.svg", + "scalable/actions/rabbitvcs-editconflicts.svg", + "scalable/actions/rabbitvcs-monkey.svg", + "scalable/actions/rabbitvcs-applypatch.svg", + "scalable/actions/rabbitvcs-switch.svg", + "scalable/actions/rabbitvcs-lock.svg", + "scalable/actions/rabbitvcs-annotate.svg", + "scalable/actions/rabbitvcs-compare.svg", + "scalable/actions/rabbitvcs-revert.svg", + "scalable/actions/rabbitvcs-bug.svg", + "scalable/actions/rabbitvcs-cleanup.svg", + "scalable/actions/rabbitvcs-clear.svg", + "scalable/actions/rabbitvcs-unstage.svg", + "scalable/actions/rabbitvcs-emblems.svg", + "scalable/actions/rabbitvcs-relocate.svg", + "scalable/actions/rabbitvcs-reset.svg", + "scalable/actions/rabbitvcs-asynchronous.svg", + "scalable/actions/rabbitvcs-commit.svg", + "scalable/actions/rabbitvcs-checkmods.svg", + "scalable/apps/rabbitvcs.svg", + "scalable/apps/rabbitvcs-small.svg", + "16x16/actions/rabbitvcs-push.png" + ] + + rabbitvcs_icon_path = get_icon_path() + for rel_icon_path in rabbitvcs_icons: + icon_path = "%s/%s" % (rabbitvcs_icon_path, rel_icon_path) + file = os.path.basename(rel_icon_path) + (root, ext) = os.path.splitext(file) + + pixbuf = GdkPixbuf.Pixbuf.new_from_file(icon_path) + iconset = Gtk.IconSet.new_from_pixbuf(pixbuf) + factory.add(root, iconset) + + factory.add_default() + + # Create a global client we can use to do VCS related stuff + self.vcs_client = VCS() + + self.status_checker = StatusChecker() + + self.status_checker.assert_version(EXT_VERSION) + + self.items_cache = {} + + def get_columns(self): + """ + Return all the columns we support. + + """ + + return ( + Nautilus.Column( + name="RabbitVCS::status_column", + attribute="status", + label=_("RVCS Status"), + description="" + ), + Nautilus.Column( + name="RabbitVCS::revision_column", + attribute="revision", + label=_("RVCS Revision"), + description="" + ), + Nautilus.Column( + name="RabbitVCS::author_column", + attribute="author", + label=_("RVCS Author"), + description="" + ), + Nautilus.Column( + name="RabbitVCS::age_column", + attribute="age", + label=_("RVCS Age"), + description="" + ) + ) + + def update_file_info(self, item): + """ + + C{update_file_info} is called only when: + + - When you enter a directory (once for each item but only when the + item was modified since the last time it was listed) + - When you refresh (once for each item visible) + - When an item viewable from the current window is created or modified + + This is insufficient for our purpose because: + + - You're not notified about items you don't see (which is needed to + keep the emblem for the directories above the item up-to-date) + + @type item: NautilusVFSFile + @param item: + + """ + enable_emblems = bool(int(settings.get("general", "enable_emblems"))) + enable_attrs = bool(int(settings.get("general", "enable_attributes"))) + + if not (enable_emblems or enable_attrs): return Nautilus.OperationResult.COMPLETE + + if not self.valid_uri(item.get_uri()): return Nautilus.OperationResult.FAILED + + path = unicode(self.get_local_path(item.get_uri()), "utf-8") + + # log.debug("update_file_info() called for %s" % path) + + invalidate = False + if path in self.nautilusVFSFile_table: + invalidate = True + + # Always replace the item in the table with the one we receive, because + # for example if an item is deleted and recreated the NautilusVFSFile + # we had before will be invalid (think pointers and such). + self.nautilusVFSFile_table[path] = item + + # This check should be pretty obvious :-) + # TODO: how come the statuses for a few directories are incorrect + # when we remove this line (detected as working copies, even though + # they are not)? That shouldn't happen. + is_in_a_or_a_working_copy = self.vcs_client.is_in_a_or_a_working_copy(path) + if not is_in_a_or_a_working_copy: return Nautilus.OperationResult.COMPLETE + + # Do our magic... + + # I have added extra logic in cb_status, using a list + # (paths_from_callback) that should allow us to work around this for + # now. But it'd be good to have an actual status monitor. + + found = False + status = None + # Could replace with (st for st in self.... if st.path ...).next() + # Need to catch exception + for idx in xrange(len(self.statuses_from_callback)): + found = (self.statuses_from_callback[idx].path) == path + if found: break + + if found: # We're here because we were triggered by a callback + status = self.statuses_from_callback[idx] + del self.statuses_from_callback[idx] + + # Don't bother the checker if we already have the info from a callback + if not found: + status = \ + self.status_checker.check_status(path, + recurse=True, + summary=True, + callback=self.cb_status, + invalidate=invalidate) + + # FIXME: when did this get disabled? + if enable_attrs: self.update_columns(item, path, status) + if enable_emblems: self.update_status(item, path, status) + + return Nautilus.OperationResult.COMPLETE + + def update_columns(self, item, path, status): + """ + Update the columns (attributes) for a given Nautilus item, + filling them in with information from the version control + server. + + """ + + revision = "" + if status.revision: + revision = str(status.revision) + + age = "" + if status.date: + age = pretty_timedelta( + datetime.datetime.fromtimestamp(status.date), + datetime.datetime.now() + ) + + author = "" + if status.author: + author = str(status.author) + + values = { + "status": status.simple_content_status(), + "revision": revision, + "author": author, + "age": age + } + + for key, value in values.items(): + item.add_string_attribute(key, value) + + def update_status(self, item, path, status): + if status.summary in rabbitvcs.ui.STATUS_EMBLEMS: + item.add_emblem(rabbitvcs.ui.STATUS_EMBLEMS[status.summary]) + + #~ @disable + # @timeit + # FIXME: this is a bottleneck. See generate_statuses() in + # MainContextMenuConditions. + def get_file_items_full(self, provider, window, items): + """ + Menu activated with items selected. Nautilus also calls this function + when rendering submenus, even though this is not needed since the entire + menu has already been returned. + + Note that calling C{nautilusVFSFile.invalidate_extension_info()} will + also cause get_file_items to be called. + + @type window: NautilusNavigationWindow + @param window: + + @type items: list of NautilusVFSFile + @param items: + + @rtype: list of MenuItems + @return: The context menu entries to add to the menu. + + """ + + paths = [] + for item in items: + if self.valid_uri(item.get_uri()): + path = unicode(self.get_local_path(item.get_uri()), "utf-8") + paths.append(path) + self.nautilusVFSFile_table[path] = item + + if len(paths) == 0: return [] + + # log.debug("get_file_items_full() called") + + paths_str = "-".join(paths) + + conditions_dict = None + if paths_str in self.items_cache: + conditions_dict = self.items_cache[paths_str] + if conditions_dict and conditions_dict != "in-progress": + conditions = NautilusMenuConditions(conditions_dict) + menu = NautilusMainContextMenu(self, window.get_data("base_dir"), paths, conditions).get_menu() + return menu + + if conditions_dict != "in-progress": + self.status_checker.generate_menu_conditions_async(provider, window.get_data("base_dir"), paths, self.update_file_items) + self.items_cache[path] = "in-progress" + + return () + + def get_file_items(self, window, items): + paths = [] + for item in items: + if self.valid_uri(item.get_uri()): + path = unicode(self.get_local_path(item.get_uri()), "utf-8") + paths.append(path) + self.nautilusVFSFile_table[path] = item + + if len(paths) == 0: return [] + + # log.debug("get_file_items() called") + + return NautilusMainContextMenu(self, window.get_data("base_dir"), paths).get_menu() + + def update_file_items(self, provider, base_dir, paths, conditions_dict): + paths_str = "-".join(paths) + self.items_cache[paths_str] = conditions_dict + Nautilus.MenuProvider.emit_items_updated_signal(provider) + + #~ @disable + # This is useful for profiling. Rename it to "get_background_items" and then + # rename the real function "get_background_items_real". + def get_background_items_profile(self, window, item): + import cProfile + import rabbitvcs.util.helper + + path = unicode(gnomevfs.get_local_path_from_uri(item.get_uri()), + "utf-8").replace("/", ":") + + profile_data_file = os.path.join( + rabbitvcs.util.helper.get_home_folder(), + "checkerservice_%s.stats" % path) + + prof = cProfile.Profile() + retval = prof.runcall(self.get_background_items_real, window, item) + prof.dump_stats(profile_data_file) + log.debug("Dumped: %s" % profile_data_file) + return retval + + def get_background_items_full(self, provider, window, item): + """ + Menu activated on entering a directory. Builds context menu for File + menu and for window background. + + @type window: NautilusNavigationWindow + @param window: + + @type item: NautilusVFSFile + @param item: + + @rtype: list of MenuItems + @return: The context menu entries to add to the menu. + + """ + + if not self.valid_uri(item.get_uri()): return + path = unicode(self.get_local_path(item.get_uri()), "utf-8") + self.nautilusVFSFile_table[path] = item + + # log.debug("get_background_items_full() called") + + conditions_dict = None + if path in self.items_cache: + conditions_dict = self.items_cache[path] + if conditions_dict and conditions_dict != "in-progress": + conditions = NautilusMenuConditions(conditions_dict) + menu = NautilusMainContextMenu(self, path, [path], conditions).get_menu() + return menu + + window.set_data("base_dir", path) + + if conditions_dict != "in-progress": + self.status_checker.generate_menu_conditions_async(provider, path, [path], self.update_background_items) + self.items_cache[path] = "in-progress" + + return () + + def get_background_items(self, window, item): + if not self.valid_uri(item.get_uri()): return + path = unicode(self.get_local_path(item.get_uri()), "utf-8") + self.nautilusVFSFile_table[path] = item + + # log.debug("get_background_items() called") + + window.set_data("base_dir", path) + + return NautilusMainContextMenu(self, path, [path]).get_menu() + + def update_background_items(self, provider, base_dir, paths, conditions_dict): + paths_str = "-".join(paths) + conditions = NautilusMenuConditions(conditions_dict) + self.items_cache[paths_str] = conditions_dict + Nautilus.MenuProvider.emit_items_updated_signal(provider) + + # + # Helper functions + # + + def valid_uri(self, uri): + """ + Check whether or not it's a good idea to have RabbitVCS do + its magic for this URI. Some examples of URI schemes: + + x-nautilus-desktop:/// # e.g. mounted devices on the desktop + + """ + + if not uri.startswith("file://"): return False + + return True + + # + # Some methods to help with keeping emblems up-to-date + # + + def rescan_after_process_exit(self, proc, paths): + + def do_check(): + # We'll check the paths first (these were the paths that + # were originally passed along to the context menu). + # + # This is needed among other things for: + # + # - When a directory is normal and you add files inside it + # + for path in paths: + # We're not interested in the result now, just the callback + self.status_checker.check_status(path, + recurse=True, + invalidate=True, + callback=self.cb_status, + summary=True) + + self.execute_after_process_exit(proc, do_check) + + def execute_after_process_exit(self, proc, func=None): + + def is_process_still_alive(): + log.debug("is_process_still_alive() for pid: %i" % proc.pid) + # First we need to see if the commit process is still running + + retval = proc.poll() + + log.debug("%s" % retval) + + still_going = (retval is None) + + if not still_going and callable(func): + func() + + return still_going + + # Add our callback function on a 1 second timeout + GObject.timeout_add_seconds(1, is_process_still_alive) + + # + # Some other methods + # + + def reload_settings(self, proc): + """ + Used to re-load settings after the settings dialog has been closed. + + FIXME: This probably doesn't belong here, ideally the settings manager + does this itself and make sure everything is reloaded properly + after the settings dialogs saves. + """ + + def do_reload_settings(): + globals()["settings"] = SettingsManager() + globals()["log"] = reload_log_settings()("rabbitvcs.util.extensions.nautilus") + log.debug("Re-scanning settings") + + self.execute_after_process_exit(proc, do_reload_settings) + + + # + # Callbacks + # + + def cb_status(self, status): + """ + This is the callback that C{StatusMonitor} calls. + + @type path: string + @param path: The path of the item something interesting happened to. + + @type statuses: list of status objects + @param statuses: The statuses + """ + if status.path in self.nautilusVFSFile_table: + item = self.nautilusVFSFile_table[status.path] + # We need to invalidate the extension info for only one reason: + # + # - Invalidating the extension info will cause Nautilus to remove all + # temporary emblems we applied so we don't have overlay problems + # (with ourselves, we'd still have some with other extensions). + # + # After invalidating C{update_file_info} applies the correct emblem. + # Since invalidation triggers an "update_file_info" call, we can + # tell it NOT to invalidate the status checker path. + self.statuses_from_callback.append(status) + # NOTE! There is a call to "update_file_info" WITHIN the call to + # invalidate_extension_info() - beware recursion! + item.invalidate_extension_info() + if status.path in self.items_cache: + del self.items_cache[status.path] + else: + log.debug("Path [%s] not found in file table" % status.path) + + def get_property_pages(self, items): + paths = [] + + for item in items: + if self.valid_uri(item.get_uri()): + path = unicode(self.get_local_path(item.get_uri()), "utf-8") + + if self.vcs_client.is_in_a_or_a_working_copy(path): + paths.append(path) + self.nautilusVFSFile_table[path] = item + + if len(paths) == 0: return [] + + label = rabbitvcs.ui.property_page.PropertyPageLabel(claim_domain=False).get_widget() + page = rabbitvcs.ui.property_page.PropertyPage(paths, claim_domain=False).get_widget() + + ppage = Nautilus.PropertyPage(name='RabbitVCS::PropertyPage', + label=label, + page=page) + + return [ppage] + +from rabbitvcs.util.contextmenuitems import * + +class NautilusContextMenu(MenuBuilder): + """ + Provides a standard Nautilus context menu (ie. a list of + "Nautilus.MenuItem"s). + """ + + signal = "activate" + + def make_menu_item(self, item, id_magic): + return item.make_nautilus_menu_item(id_magic) + + def attach_submenu(self, menu_node, submenu_list): + submenu = Nautilus.Menu() + menu_node.set_submenu(submenu) + [submenu.append_item(item) for item in submenu_list] + + def top_level_menu(self, items): + return items + +class NautilusMenuConditions(ContextMenuConditions): + def __init__(self, path_dict): + self.path_dict = path_dict + +class NautilusMainContextMenu(MainContextMenu): + def get_menu(self): + return NautilusContextMenu(self.structure, self.conditions, self.callbacks).menu diff -Nru rabbitvcs-0.13.1/clients/nautilus-3.0/README rabbitvcs-0.15.0.5/clients/nautilus-3.0/README --- rabbitvcs-0.13.1/clients/nautilus-3.0/README 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/clients/nautilus-3.0/README 2011-11-04 16:36:08.000000000 +0000 @@ -0,0 +1,29 @@ +RabbitVCS Nautilus3 Extension + +This extension is meant to be used with the Nautilus File Manager v3, + +Requirements: + * nautilus (>= v3.0) + * nautilus-python (>= 1.0) + * python-dbus (> 0.80) + * (all other RabbitVCS requirements) + +To install: + To install for all users, copy RabbitVCS.py to: + /usr/share/nautilus-python/extensions + + To install for a single user, copy RabbitVCS.py to: + ~/.local/share/nautilus-python-extensions + + In both cases, you may need to create the python/python-extensions folder. + + Restart nautilus with the following commands: + $ nautilus -q + $ pgrep -f service.py | xargs kill + $ nohup nautilus > /dev/null & + +Troubleshooting: + + See the known-issues section of our website: + http://wiki.rabbitvcs.org/wiki/support/known-issues + diff -Nru rabbitvcs-0.13.1/clients/nautilusold/RabbitVCS.py rabbitvcs-0.15.0.5/clients/nautilusold/RabbitVCS.py --- rabbitvcs-0.13.1/clients/nautilusold/RabbitVCS.py 2010-03-26 15:11:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/clients/nautilusold/RabbitVCS.py 2010-05-18 15:57:51.000000000 +0000 @@ -28,7 +28,7 @@ 4. or clean up the current menuitem logic in some other way """ -__version__ = "0.13.1" +__version__ = "0.13.beta1" import copy import glob @@ -48,7 +48,7 @@ # FIXME: this (and other) should be moved into a rabbitvcs module to prevent # collisions with other modules on the path. -import rabbitvcs.lib.helper +import rabbitvcs.util.helper #============================================================================== @@ -387,14 +387,14 @@ file = files[0] path = gnomevfs.get_local_path_from_uri(file.get_uri()) - rabbitvcs.lib.helper.launch_diff_tool(path + ".mine", path) + rabbitvcs.util.helper.launch_diff_tool(path + ".mine", path) #-------------------------------------------------------------------------- def OnResolveConflicts(self, menuitem, window, files): """ Resolve Conflicts menu handler. """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("resolve", paths) + pid = rabbitvcs.util.helper.launch_ui_window("resolve", paths) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -403,7 +403,7 @@ """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("revert", paths) + pid = rabbitvcs.util.helper.launch_ui_window("revert", paths) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -411,7 +411,7 @@ """ Checkout menu handler. """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("checkout", paths) + pid = rabbitvcs.util.helper.launch_ui_window("checkout", paths) #-------------------------------------------------------------------------- def OnShowDiff(self, menuitem, window, files): @@ -419,7 +419,7 @@ """ paths = self.get_paths_from_files(files) - rabbitvcs.lib.helper.launch_diff_tool(*paths) + rabbitvcs.util.helper.launch_diff_tool(*paths) #-------------------------------------------------------------------------- def OnShowLog(self, menuitem, window, files): @@ -427,7 +427,7 @@ """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("log", paths) + pid = rabbitvcs.util.helper.launch_ui_window("log", paths) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -435,7 +435,7 @@ """ Commit menu handler. """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("commit", ["--base-dir=" + window.get_data("base_dir")] + paths) + pid = rabbitvcs.util.helper.launch_ui_window("commit", ["--base-dir=" + window.get_data("base_dir")] + paths) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -443,7 +443,7 @@ """ Update menu handler. """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("update", paths) + pid = rabbitvcs.util.helper.launch_ui_window("update", paths) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -451,7 +451,7 @@ """ Add menu handler. """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("add", paths) + pid = rabbitvcs.util.helper.launch_ui_window("add", paths) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -460,7 +460,7 @@ """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("delete", paths) + pid = rabbitvcs.util.helper.launch_ui_window("delete", paths) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -469,7 +469,7 @@ """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("rename", paths) + pid = rabbitvcs.util.helper.launch_ui_window("rename", paths) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -478,7 +478,7 @@ """ paths = self.get_paths_from_files(files) - pid = rabbitvcs.lib.helper.launch_ui_window("browser", [paths[0]]) + pid = rabbitvcs.util.helper.launch_ui_window("browser", [paths[0]]) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- @@ -494,7 +494,7 @@ """ file = files[0] path = gnomevfs.get_local_path_from_uri(file.get_uri()) - pid = rabbitvcs.lib.helper.launch_ui_window("property_editor", [path]) + pid = rabbitvcs.util.helper.launch_ui_window("property_editor", [path]) self.RescanFilesAfterProcess(pid) #-------------------------------------------------------------------------- diff -Nru rabbitvcs-0.13.1/clients/thunar/RabbitVCS.py rabbitvcs-0.15.0.5/clients/thunar/RabbitVCS.py --- rabbitvcs-0.13.1/clients/thunar/RabbitVCS.py 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/clients/thunar/RabbitVCS.py 2010-12-16 18:25:15.000000000 +0000 @@ -37,24 +37,23 @@ import gobject import gtk -from rabbitvcs.lib.vcs.svn import SVN +from rabbitvcs.vcs.svn import SVN -from rabbitvcs.util.vcs import * import rabbitvcs.ui import rabbitvcs.ui.property_page -from rabbitvcs.lib.helper import launch_ui_window, launch_diff_tool -from rabbitvcs.lib.helper import get_file_extension, get_common_directory -from rabbitvcs.lib.helper import pretty_timedelta -from rabbitvcs.lib.decorators import timeit, disable -from rabbitvcs.lib.contextmenu import MainContextMenu, SEPARATOR +from rabbitvcs.util.helper import launch_ui_window, launch_diff_tool +from rabbitvcs.util.helper import get_file_extension, get_common_directory +from rabbitvcs.util.helper import pretty_timedelta +from rabbitvcs.util.decorators import timeit, disable +from rabbitvcs.util.contextmenu import MainContextMenu, SEPARATOR -from rabbitvcs.lib.log import Log, reload_log_settings -log = Log("rabbitvcs.lib.extensions.thunarx.RabbitVCS") +from rabbitvcs.util.log import Log, reload_log_settings +log = Log("rabbitvcs.util.extensions.thunarx.RabbitVCS") from rabbitvcs import gettext _ = gettext.gettext -from rabbitvcs.lib.settings import SettingsManager +from rabbitvcs.util.settings import SettingsManager settings = SettingsManager() import rabbitvcs.services.service @@ -147,10 +146,7 @@ def __init__(self): threading.currentThread().setName("RabbitVCS extension thread") - # Create a global client we can use to do VCS related stuff - self.vcs_client = SVN() - - self.status_checker = StatusChecker(None) + self.status_checker = StatusChecker() def get_local_path(self, item): return item.get_uri().replace("file://", "") @@ -262,7 +258,6 @@ self.status_checker.check_status(path, recurse=True, invalidate=True, - callback=True, summary=True) self.execute_after_process_exit(proc, do_check) @@ -302,7 +297,7 @@ def do_reload_settings(): globals()["settings"] = SettingsManager() - globals()["log"] = reload_log_settings()("rabbitvcs.lib.extensions.thunar") + globals()["log"] = reload_log_settings()("rabbitvcs.util.extensions.thunar") log.debug("Re-scanning settings") self.execute_after_process_exit(proc, do_reload_settings) @@ -327,9 +322,9 @@ return [ppage] -from rabbitvcs.lib.contextmenuitems import * +from rabbitvcs.util.contextmenuitems import * -class ThunarxContextMenu(rabbitvcs.lib.contextmenu.MenuBuilder): +class ThunarxContextMenu(rabbitvcs.util.contextmenu.MenuBuilder): """ Provides a standard Gtk Context Menu class used for all context menus in gtk dialogs/windows. Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/data/icons/hicolor/16x16/actions/rabbitvcs-push.png and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/data/icons/hicolor/16x16/actions/rabbitvcs-push.png differ diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/index.theme rabbitvcs-0.15.0.5/data/icons/hicolor/index.theme --- rabbitvcs-0.13.1/data/icons/hicolor/index.theme 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/index.theme 2008-12-26 23:00:10.000000000 +0000 @@ -0,0 +1,1494 @@ +[Icon Theme] +Name=Hicolor +Comment=Fallback icon theme +Hidden=true +Directories=16x16/actions,16x16/animations,16x16/apps,16x16/categories,16x16/devices,16x16/emblems,16x16/emotes,16x16/filesystems,16x16/intl,16x16/mimetypes,16x16/places,16x16/status,16x16/stock/chart,16x16/stock/code,16x16/stock/data,16x16/stock/form,16x16/stock/image,16x16/stock/io,16x16/stock/media,16x16/stock/navigation,16x16/stock/net,16x16/stock/object,16x16/stock/table,16x16/stock/text,22x22/actions,22x22/animations,22x22/apps,22x22/categories,22x22/devices,22x22/emblems,22x22/emotes,22x22/filesystems,22x22/intl,22x22/mimetypes,22x22/places,22x22/status,22x22/stock/chart,22x22/stock/code,22x22/stock/data,22x22/stock/form,22x22/stock/image,22x22/stock/io,22x22/stock/media,22x22/stock/navigation,22x22/stock/net,22x22/stock/object,22x22/stock/table,22x22/stock/text,24x24/actions,24x24/animations,24x24/apps,24x24/categories,24x24/devices,24x24/emblems,24x24/emotes,24x24/filesystems,24x24/intl,24x24/mimetypes,24x24/places,24x24/status,24x24/stock/chart,24x24/stock/code,24x24/stock/data,24x24/stock/form,24x24/stock/image,24x24/stock/io,24x24/stock/media,24x24/stock/navigation,24x24/stock/net,24x24/stock/object,24x24/stock/table,24x24/stock/text,32x32/actions,32x32/animations,32x32/apps,32x32/categories,32x32/devices,32x32/emblems,32x32/emotes,32x32/filesystems,32x32/intl,32x32/mimetypes,32x32/places,32x32/status,32x32/stock/chart,32x32/stock/code,32x32/stock/data,32x32/stock/form,32x32/stock/image,32x32/stock/io,32x32/stock/media,32x32/stock/navigation,32x32/stock/net,32x32/stock/object,32x32/stock/table,32x32/stock/text,36x36/actions,36x36/animations,36x36/apps,36x36/categories,36x36/devices,36x36/emblems,36x36/emotes,36x36/filesystems,36x36/intl,36x36/mimetypes,36x36/places,36x36/status,36x36/stock/chart,36x36/stock/code,36x36/stock/data,36x36/stock/form,36x36/stock/image,36x36/stock/io,36x36/stock/media,36x36/stock/navigation,36x36/stock/net,36x36/stock/object,36x36/stock/table,36x36/stock/text,48x48/actions,48x48/animations,48x48/apps,48x48/categories,48x48/devices,48x48/emblems,48x48/emotes,48x48/filesystems,48x48/intl,48x48/mimetypes,48x48/places,48x48/status,48x48/stock/chart,48x48/stock/code,48x48/stock/data,48x48/stock/form,48x48/stock/image,48x48/stock/io,48x48/stock/media,48x48/stock/navigation,48x48/stock/net,48x48/stock/object,48x48/stock/table,48x48/stock/text,64x64/actions,64x64/animations,64x64/apps,64x64/categories,64x64/devices,64x64/emblems,64x64/emotes,64x64/filesystems,64x64/intl,64x64/mimetypes,64x64/places,64x64/status,64x64/stock/chart,64x64/stock/code,64x64/stock/data,64x64/stock/form,64x64/stock/image,64x64/stock/io,64x64/stock/media,64x64/stock/navigation,64x64/stock/net,64x64/stock/object,64x64/stock/table,64x64/stock/text,72x72/actions,72x72/animations,72x72/apps,72x72/categories,72x72/devices,72x72/emblems,72x72/emotes,72x72/filesystems,72x72/intl,72x72/mimetypes,72x72/places,72x72/status,72x72/stock/chart,72x72/stock/code,72x72/stock/data,72x72/stock/form,72x72/stock/image,72x72/stock/io,72x72/stock/media,72x72/stock/navigation,72x72/stock/net,72x72/stock/object,72x72/stock/table,72x72/stock/text,96x96/actions,96x96/animations,96x96/apps,96x96/categories,96x96/devices,96x96/emblems,96x96/emotes,96x96/filesystems,96x96/intl,96x96/mimetypes,96x96/places,96x96/status,96x96/stock/chart,96x96/stock/code,96x96/stock/data,96x96/stock/form,96x96/stock/image,96x96/stock/io,96x96/stock/media,96x96/stock/navigation,96x96/stock/net,96x96/stock/object,96x96/stock/table,96x96/stock/text,128x128/actions,128x128/animations,128x128/apps,128x128/categories,128x128/devices,128x128/emblems,128x128/emotes,128x128/filesystems,128x128/intl,128x128/mimetypes,128x128/places,128x128/status,128x128/stock/chart,128x128/stock/code,128x128/stock/data,128x128/stock/form,128x128/stock/image,128x128/stock/io,128x128/stock/media,128x128/stock/navigation,128x128/stock/net,128x128/stock/object,128x128/stock/table,128x128/stock/text,192x192/actions,192x192/animations,192x192/apps,192x192/categories,192x192/devices,192x192/emblems,192x192/emotes,192x192/filesystems,192x192/intl,192x192/mimetypes,192x192/places,192x192/status,192x192/stock/chart,192x192/stock/code,192x192/stock/data,192x192/stock/form,192x192/stock/image,192x192/stock/io,192x192/stock/media,192x192/stock/navigation,192x192/stock/net,192x192/stock/object,192x192/stock/table,192x192/stock/text,scalable/actions,scalable/animations,scalable/apps,scalable/categories,scalable/devices,scalable/emblems,scalable/emotes,scalable/filesystems,scalable/intl,scalable/mimetypes,scalable/places,scalable/status,scalable/stock/chart,scalable/stock/code,scalable/stock/data,scalable/stock/form,scalable/stock/image,scalable/stock/io,scalable/stock/media,scalable/stock/navigation,scalable/stock/net,scalable/stock/object,scalable/stock/table,scalable/stock/text + + +[16x16/actions] +Size=16 +Context=Actions +Type=Threshold + +[16x16/animations] +Size=16 +Context=Animations +Type=Threshold + +[16x16/apps] +Size=16 +Context=Applications +Type=Threshold + +[16x16/categories] +Size=16 +Context=Categories +Type=Threshold + +[16x16/devices] +Size=16 +Context=Devices +Type=Threshold + +[16x16/emblems] +Size=16 +Context=Emblems +Type=Threshold + +[16x16/emotes] +Size=16 +Context=Emotes +Type=Threshold + +[16x16/filesystems] +Size=16 +Context=FileSystems +Type=Threshold + +[16x16/intl] +Size=16 +Context=International +Type=Threshold + +[16x16/mimetypes] +Size=16 +Context=MimeTypes +Type=Threshold + +[16x16/places] +Size=16 +Context=Places +Type=Threshold + +[16x16/status] +Size=16 +Context=Status +Type=Threshold + +[16x16/stock/chart] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/code] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/data] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/form] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/image] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/io] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/media] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/navigation] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/net] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/object] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/table] +Size=16 +Context=Stock +Type=Threshold + +[16x16/stock/text] +Size=16 +Context=Stock +Type=Threshold + +[22x22/actions] +Size=22 +Context=Actions +Type=Threshold + +[22x22/animations] +Size=22 +Context=Animations +Type=Threshold + +[22x22/apps] +Size=22 +Context=Applications +Type=Fixed + +[22x22/categories] +Size=22 +Context=Categories +Type=Threshold + +[22x22/devices] +Size=22 +Context=Devices +Type=Threshold + +[22x22/emblems] +Size=22 +Context=Emblems +Type=Threshold + +[22x22/emotes] +Size=22 +Context=Emotes +Type=Threshold + +[22x22/filesystems] +Size=22 +Context=FileSystems +Type=Threshold + +[22x22/intl] +Size=22 +Context=International +Type=Threshold + +[22x22/mimetypes] +Size=22 +Context=MimeTypes +Type=Threshold + +[22x22/places] +Size=22 +Context=Places +Type=Threshold + +[22x22/status] +Size=22 +Context=Status +Type=Threshold + +[22x22/stock/chart] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/code] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/data] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/form] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/image] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/io] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/media] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/navigation] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/net] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/object] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/table] +Size=22 +Context=Stock +Type=Threshold + +[22x22/stock/text] +Size=22 +Context=Stock +Type=Threshold + +[24x24/actions] +Size=24 +Context=Actions +Type=Threshold + +[24x24/animations] +Size=24 +Context=Animations +Type=Threshold + +[24x24/apps] +Size=24 +Context=Applications +Type=Threshold + +[24x24/categories] +Size=24 +Context=Categories +Type=Threshold + +[24x24/devices] +Size=24 +Context=Devices +Type=Threshold + +[24x24/emblems] +Size=24 +Context=Emblems +Type=Threshold + +[24x24/emotes] +Size=24 +Context=Emotes +Type=Threshold + +[24x24/filesystems] +Size=24 +Context=FileSystems +Type=Threshold + +[24x24/intl] +Size=24 +Context=International +Type=Threshold + +[24x24/mimetypes] +Size=24 +Context=MimeTypes +Type=Threshold + +[24x24/places] +Size=24 +Context=Places +Type=Threshold + +[24x24/status] +Size=24 +Context=Status +Type=Threshold + +[24x24/stock/chart] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/code] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/data] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/form] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/image] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/io] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/media] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/navigation] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/net] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/object] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/table] +Size=24 +Context=Stock +Type=Threshold + +[24x24/stock/text] +Size=24 +Context=Stock +Type=Threshold + +[32x32/actions] +Size=32 +Context=Actions +Type=Threshold + +[32x32/animations] +Size=32 +Context=Animations +Type=Threshold + +[32x32/apps] +Size=32 +Context=Applications +Type=Threshold + +[32x32/categories] +Size=32 +Context=Categories +Type=Threshold + +[32x32/devices] +Size=32 +Context=Devices +Type=Threshold + +[32x32/emblems] +Size=32 +Context=Emblems +Type=Threshold + +[32x32/emotes] +Size=32 +Context=Emotes +Type=Threshold + +[32x32/filesystems] +Size=32 +Context=FileSystems +Type=Threshold + +[32x32/intl] +Size=32 +Context=International +Type=Threshold + +[32x32/mimetypes] +Size=32 +Context=MimeTypes +Type=Threshold + +[32x32/places] +Size=32 +Context=Places +Type=Threshold + +[32x32/status] +Size=32 +Context=Status +Type=Threshold + +[32x32/stock/chart] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/code] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/data] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/form] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/image] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/io] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/media] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/navigation] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/net] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/object] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/table] +Size=32 +Context=Stock +Type=Threshold + +[32x32/stock/text] +Size=32 +Context=Stock +Type=Threshold + +[36x36/actions] +Size=36 +Context=Actions +Type=Threshold + +[36x36/animations] +Size=36 +Context=Animations +Type=Threshold + +[36x36/apps] +Size=36 +Context=Applications +Type=Threshold + +[36x36/categories] +Size=36 +Context=Categories +Type=Threshold + +[36x36/devices] +Size=36 +Context=Devices +Type=Threshold + +[36x36/emblems] +Size=36 +Context=Emblems +Type=Threshold + +[36x36/emotes] +Size=36 +Context=Emotes +Type=Threshold + +[36x36/filesystems] +Size=36 +Context=FileSystems +Type=Threshold + +[36x36/intl] +Size=36 +Context=International +Type=Threshold + +[36x36/mimetypes] +Size=36 +Context=MimeTypes +Type=Threshold + +[36x36/places] +Size=36 +Context=Places +Type=Threshold + +[36x36/status] +Size=36 +Context=Status +Type=Threshold + +[36x36/stock/chart] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/code] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/data] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/form] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/image] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/io] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/media] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/navigation] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/net] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/object] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/table] +Size=36 +Context=Stock +Type=Threshold + +[36x36/stock/text] +Size=36 +Context=Stock +Type=Threshold + +[48x48/actions] +Size=48 +Context=Actions +Type=Threshold + +[48x48/animations] +Size=48 +Context=Animations +Type=Threshold + +[48x48/apps] +Size=48 +Context=Applications +Type=Threshold + +[48x48/categories] +Size=48 +Context=Categories +Type=Threshold + +[48x48/devices] +Size=48 +Context=Devices +Type=Threshold + +[48x48/emblems] +Size=48 +Context=Emblems +Type=Threshold + +[48x48/emotes] +Size=48 +Context=Emotes +Type=Threshold + +[48x48/filesystems] +Size=48 +Context=FileSystems +Type=Threshold + +[48x48/intl] +Size=48 +Context=International +Type=Threshold + +[48x48/mimetypes] +Size=48 +Context=MimeTypes +Type=Threshold + +[48x48/places] +Size=48 +Context=Places +Type=Threshold + +[48x48/status] +Size=48 +Context=Status +Type=Threshold + +[48x48/stock/chart] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/code] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/data] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/form] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/image] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/io] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/media] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/navigation] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/net] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/object] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/table] +Size=48 +Context=Stock +Type=Threshold + +[48x48/stock/text] +Size=48 +Context=Stock +Type=Threshold + +[64x64/actions] +Size=64 +Context=Actions +Type=Threshold + +[64x64/animations] +Size=64 +Context=Animations +Type=Threshold + +[64x64/apps] +Size=64 +Context=Applications +Type=Threshold + +[64x64/categories] +Size=64 +Context=Categories +Type=Threshold + +[64x64/devices] +Size=64 +Context=Devices +Type=Threshold + +[64x64/emblems] +Size=64 +Context=Emblems +Type=Threshold + +[64x64/emotes] +Size=64 +Context=Emotes +Type=Threshold + +[64x64/filesystems] +Size=64 +Context=FileSystems +Type=Threshold + +[64x64/intl] +Size=64 +Context=International +Type=Threshold + +[64x64/mimetypes] +Size=64 +Context=MimeTypes +Type=Threshold + +[64x64/places] +Size=64 +Context=Places +Type=Threshold + +[64x64/status] +Size=64 +Context=Status +Type=Threshold + +[64x64/stock/chart] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/code] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/data] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/form] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/image] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/io] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/media] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/navigation] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/net] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/object] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/table] +Size=64 +Context=Stock +Type=Threshold + +[64x64/stock/text] +Size=64 +Context=Stock +Type=Threshold +[72x72/actions] +Size=72 +Context=Actions +Type=Threshold + +[72x72/animations] +Size=72 +Context=Animations +Type=Threshold + +[72x72/apps] +Size=72 +Context=Applications +Type=Threshold + +[72x72/categories] +Size=72 +Context=Categories +Type=Threshold + +[72x72/devices] +Size=72 +Context=Devices +Type=Threshold + +[72x72/emblems] +Size=72 +Context=Emblems +Type=Threshold + +[72x72/emotes] +Size=72 +Context=Emotes +Type=Threshold + +[72x72/filesystems] +Size=72 +Context=FileSystems +Type=Threshold + +[72x72/intl] +Size=72 +Context=International +Type=Threshold + +[72x72/mimetypes] +Size=72 +Context=MimeTypes +Type=Threshold + +[72x72/places] +Size=72 +Context=Places +Type=Threshold + +[72x72/status] +Size=72 +Context=Status +Type=Threshold + +[72x72/stock/chart] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/code] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/data] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/form] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/image] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/io] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/media] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/navigation] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/net] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/object] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/table] +Size=72 +Context=Stock +Type=Threshold + +[72x72/stock/text] +Size=72 +Context=Stock +Type=Threshold + +[96x96/actions] +Size=96 +Context=Actions +Type=Threshold + +[96x96/animations] +Size=96 +Context=Animations +Type=Threshold + +[96x96/apps] +Size=96 +Context=Applications +Type=Threshold + +[96x96/categories] +Size=96 +Context=Categories +Type=Threshold + +[96x96/devices] +Size=96 +Context=Devices +Type=Threshold + +[96x96/emblems] +Size=96 +Context=Emblems +Type=Threshold + +[96x96/emotes] +Size=96 +Context=Emotes +Type=Threshold + +[96x96/filesystems] +Size=96 +Context=FileSystems +Type=Threshold + +[96x96/intl] +Size=96 +Context=International +Type=Threshold + +[96x96/mimetypes] +Size=96 +Context=MimeTypes +Type=Threshold + +[96x96/places] +Size=96 +Context=Places +Type=Threshold + +[96x96/status] +Size=96 +Context=Status +Type=Threshold + +[96x96/stock/chart] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/code] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/data] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/form] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/image] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/io] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/media] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/navigation] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/net] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/object] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/table] +Size=96 +Context=Stock +Type=Threshold + +[96x96/stock/text] +Size=96 +Context=Stock +Type=Threshold + +[128x128/actions] +Size=128 +Context=Actions +Type=Threshold + +[128x128/animations] +Size=128 +Context=Animations +Type=Threshold + +[128x128/apps] +Size=128 +Context=Applications +Type=Threshold + +[128x128/categories] +Size=128 +Context=Categories +Type=Threshold + +[128x128/devices] +Size=128 +Context=Devices +Type=Threshold + +[128x128/emblems] +Size=128 +Context=Emblems +Type=Threshold + +[128x128/emotes] +Size=128 +Context=Emotes +Type=Threshold + +[128x128/filesystems] +Size=128 +Context=FileSystems +Type=Threshold + +[128x128/intl] +Size=128 +Context=International +Type=Threshold + +[128x128/mimetypes] +Size=128 +Context=MimeTypes +Type=Threshold + +[128x128/places] +Size=128 +Context=Places +Type=Threshold + +[128x128/status] +Size=128 +Context=Status +Type=Threshold + +[128x128/stock/chart] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/code] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/data] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/form] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/image] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/io] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/media] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/navigation] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/net] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/object] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/table] +Size=128 +Context=Stock +Type=Threshold + +[128x128/stock/text] +Size=128 +Context=Stock +Type=Threshold + +[192x192/actions] +Size=192 +Context=Actions +Type=Threshold + +[192x192/animations] +Size=192 +Context=Animations +Type=Threshold + +[192x192/apps] +Size=192 +Context=Applications +Type=Threshold + +[192x192/categories] +Size=192 +Context=Categories +Type=Threshold + +[192x192/devices] +Size=192 +Context=Devices +Type=Threshold + +[192x192/emblems] +Size=192 +Context=Emblems +Type=Threshold + +[192x192/emotes] +Size=192 +Context=Emotes +Type=Threshold + +[192x192/filesystems] +Size=192 +Context=FileSystems +Type=Threshold + +[192x192/intl] +Size=192 +Context=International +Type=Threshold + +[192x192/mimetypes] +Size=192 +Context=MimeTypes +Type=Threshold + +[192x192/places] +Size=192 +Context=Places +Type=Threshold + +[192x192/status] +Size=192 +Context=Status +Type=Threshold + +[192x192/stock/chart] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/code] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/data] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/form] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/image] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/io] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/media] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/navigation] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/net] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/object] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/table] +Size=192 +Context=Stock +Type=Threshold + +[192x192/stock/text] +Size=192 +Context=Stock +Type=Threshold + +[scalable/actions] +MinSize=1 +Size=128 +MaxSize=256 +Context=Actions +Type=Scalable + +[scalable/animations] +MinSize=1 +Size=128 +MaxSize=256 +Context=Animations +Type=Scalable + +[scalable/apps] +MinSize=1 +Size=128 +MaxSize=256 +Context=Applications +Type=Scalable + +[scalable/categories] +MinSize=1 +Size=128 +MaxSize=256 +Context=Categories +Type=Scalable + +[scalable/devices] +MinSize=1 +Size=128 +MaxSize=256 +Context=Devices +Type=Scalable + +[scalable/emblems] +MinSize=1 +Size=128 +MaxSize=256 +Context=Emblems +Type=Scalable + +[scalable/emotes] +MinSize=1 +Size=128 +MaxSize=256 +Context=Emotes +Type=Scalable + +[scalable/filesystems] +MinSize=1 +Size=128 +MaxSize=256 +Context=FileSystems +Type=Scalable + +[scalable/intl] +MinSize=1 +Size=128 +MaxSize=256 +Context=International +Type=Scalable + +[scalable/mimetypes] +MinSize=1 +Size=128 +MaxSize=256 +Context=MimeTypes +Type=Scalable + +[scalable/places] +MinSize=1 +Size=128 +MaxSize=256 +Context=Places +Type=Scalable + +[scalable/status] +MinSize=1 +Size=128 +MaxSize=256 +Context=Status +Type=Scalable + +[scalable/stock/chart] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/code] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/data] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/form] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/image] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/io] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/media] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/navigation] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/net] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/object] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/table] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + +[scalable/stock/text] +MinSize=1 +Size=128 +MaxSize=256 +Context=Stock +Type=Scalable + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-about.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-about.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-about.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-about.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-add.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-add.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-add.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-add.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Add + 2006-01-04 + + + Andreas Nilsson + + + http://tango-project.org + + + add + plus + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-annotate.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-annotate.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-annotate.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-annotate.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + System-log-out + 2007-08-27 + + + Lapo Calamandrei + + + + + + + Kalle Persson + + + + + logout + exit + man + sign + running + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-applypatch.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-applypatch.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-applypatch.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-applypatch.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,125 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-asynchronous.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-asynchronous.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-asynchronous.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-asynchronous.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,991 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Send and Receive Mail + + + Jakub Steiner + + + + + Andreas Nilsson, Garrett LeSage + + + + + + mail + e-mail + send + receive + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-branch.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-branch.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-branch.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-branch.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,261 @@ + + + + + + + image/svg+xml + + View Fullscreen + + + + + + + http://jimmac.musichall.cz + + + Jakub Steiner + + + + + window + maximize + fullscreen + view + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-bug.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-bug.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-bug.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-bug.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-changes.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-changes.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-changes.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-changes.svg 2009-11-13 14:38:45.000000000 +0000 @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-checkmods.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-checkmods.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-checkmods.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-checkmods.svg 2009-11-05 16:41:12.000000000 +0000 @@ -0,0 +1,589 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Lapo Calamandrei + + + Call Start + + + receiver + phone + call + start + answer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-checkout.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-checkout.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-checkout.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-checkout.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,951 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Edit Undo + + + edit + undo + revert + + + + + Andreas Nilsson +Lapo Calamandrei + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-cleanup.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-cleanup.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-cleanup.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-cleanup.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Ulisse Perusin + + + + uli.peru@gmail.com + edit-clear + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-clear.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-clear.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-clear.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-clear.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Ulisse Perusin + + + + uli.peru@gmail.com + edit-clear + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-commit.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-commit.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-commit.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-commit.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Edit Undo + + + edit + undo + revert + + + + + Andreas Nilsson +Lapo Calamandrei + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-compare.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-compare.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-compare.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-compare.svg 2009-11-14 17:31:00.000000000 +0000 @@ -0,0 +1,422 @@ + + + + + + + image/svg+xml + + Restore View + + + + + + + http://jimmac.musichall.cz + + + Jakub Steiner + + + + + window + fullscreen + view. restore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-createpatch.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-createpatch.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-createpatch.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-createpatch.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,109 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-dbus.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-dbus.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-dbus.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-dbus.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Konversation application icon + March 2006 + + + Andreas Nilsson + + + http://tango-project.org + + + konversation + chat + irc + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-delete.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-delete.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-delete.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-delete.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,872 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Lapo Calamandrei + + + Trashbin + 2006-04-19 + + + + delete + remove + trashbin + trashcan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-diff.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-diff.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-diff.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-diff.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,748 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Edit Find + + + edit + find + locate + search + + + + + + Steven Garrity + + + + + + Jakub Steiner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-drive.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-drive.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-drive.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-drive.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,469 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Drive - Hard Disk + + + Jakub Steiner + + + + + hdd + hard drive + fixed + media + solid + + + + + http://jimmac.musichall.cz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-editconflicts.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-editconflicts.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-editconflicts.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-editconflicts.svg 2010-12-27 21:49:10.000000000 +0000 @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Paste + + + edit + paste + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-emblems.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-emblems.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-emblems.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-emblems.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,2571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Photos + 2006-06-11 + + + Lapo Calamandrei + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-export.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-export.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-export.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-export.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,499 @@ + + + + + + + image/svg+xml + + Folder Drag Accept + + + Jakub Steiner + + + + + http://jimmac.musichall.cz/ + + + folder + directory + storage + drag accept + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-help.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-help.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-help.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-help.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Help Browser + 2005-11-06 + + + Tuomas Kuosmanen + + + + + help + browser + documentation + docs + man + info + + + + + + Jakub Steiner, Andreas Nilsson + + + http://tigert.com + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-import.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-import.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-import.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-import.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,1047 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Jakub Steiner, Lapo Calamandrei + + + + + + + + Drive Harddisk + + + hdd + drive + hard + fixed + media + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-lock.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-lock.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-lock.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-lock.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,630 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Lock Screen + + + + Jakub Steiner + + + + + video + display + lock + screen + password + session + screensaver + + + + http://jimmac.musichall.cz/ + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-merge.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-merge.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-merge.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-merge.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,422 @@ + + + + + + + image/svg+xml + + Restore View + + + + + + + http://jimmac.musichall.cz + + + Jakub Steiner + + + + + window + fullscreen + view. restore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-monkey.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-monkey.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-monkey.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-monkey.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,583 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + face-monkey + + + Ulisse Perusin + + + + + based on the work of someone who didn't fill the metadata... + + + + + emotes + monkey + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-properties.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-properties.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-properties.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-properties.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,574 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Document Properties + + + document + settings + preferences + properties + tweak + + + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-refresh.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-refresh.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-refresh.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-refresh.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,397 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + View Refresh + + + reload + refresh + view + + + + + Ricardo 'Rick' González + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-relocate.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-relocate.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-relocate.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-relocate.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-rename.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-rename.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-rename.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-rename.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Text Editor + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-reset.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-reset.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-reset.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-reset.svg 2010-12-05 15:12:06.000000000 +0000 @@ -0,0 +1,687 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Document Revert + + + document + revert + + + + + + Lapo Calamandrei + + + + + + + + + 2007-02-15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-resolve.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-resolve.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-resolve.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-resolve.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Ulisse Perusin + + + + uli.peru@gmail.com + edit-clear + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-revert.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-revert.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-revert.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-revert.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Edit Undo + + + edit + undo + revert + + + + + Andreas Nilsson +Lapo Calamandrei + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-run.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-run.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-run.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-run.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,562 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Lapo Calamandrei + + + System Run + + + + run + launch + exec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-settings.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-settings.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-settings.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-settings.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + System Preferences + + + Andreas Nilsson + + + + + category + system + preferences + settings + control center + + + + + Jakub Steiner +Ulisse Perusin + + + + + + + + + + + + + + image/svg+xml + + Preferences + + + Andreas Nilsson + + + + + Lapo Calamandrei, Ulisse Perusin, Jakub Steiner + + + + + + category + system + preferences + settings + control center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-show_log.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-show_log.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-show_log.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-show_log.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,638 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Lapo Calamandrei + + + Log Viewer + + + log + viewer + inspect + system + utility + + + 3 set 2006 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-stop.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-stop.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-stop.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-stop.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Stop + 2005-10-16 + + + Andreas Nilsson + + + + + stop + halt + error + + + + + + Jakub Steiner + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-switch.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-switch.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-switch.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-switch.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Jump + + + go + jump + seek + arrow + pointer + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-unlock.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-unlock.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-unlock.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-unlock.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,557 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Lapo Calamandrei + + + + + + Ulisse Perusin + + + Keys + + + keys + key + password + authentication + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-unstage.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-unstage.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-unstage.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-unstage.svg 2010-12-10 18:51:18.000000000 +0000 @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-update.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-update.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/actions/rabbitvcs-update.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/actions/rabbitvcs-update.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Edit Undo + + + edit + undo + revert + + + + + Andreas Nilsson +Lapo Calamandrei + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/apps/rabbitvcs-small.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/apps/rabbitvcs-small.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/apps/rabbitvcs-small.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/apps/rabbitvcs-small.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/apps/rabbitvcs.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/apps/rabbitvcs.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/apps/rabbitvcs.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/apps/rabbitvcs.svg 2009-09-28 14:21:36.000000000 +0000 @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-added.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-added.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-added.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-added.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-calculating.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-calculating.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-calculating.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-calculating.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Lapo Calamandrei + + + Clock + + + + clock + time + date + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-complicated.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-complicated.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-complicated.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-complicated.svg 2010-03-22 14:11:42.000000000 +0000 @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-conflicted.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-conflicted.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-conflicted.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-conflicted.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-deleted.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-deleted.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-deleted.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-deleted.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-error.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-error.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-error.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-error.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-ignored.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-ignored.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-ignored.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-ignored.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-locked.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-locked.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-locked.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-locked.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,310 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-modified.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-modified.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-modified.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-modified.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-normal.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-normal.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-normal.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-normal.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-obstructed.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-obstructed.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-obstructed.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-obstructed.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-read_only.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-read_only.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-read_only.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-read_only.svg 2009-11-09 10:45:44.000000000 +0000 @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-unversioned.svg rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-unversioned.svg --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-unversioned.svg 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-unversioned.svg 2010-12-13 18:30:09.000000000 +0000 @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/README rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/README --- rabbitvcs-0.13.1/data/icons/hicolor/scalable/emblems/README 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/data/icons/hicolor/scalable/emblems/README 2009-09-28 11:25:15.000000000 +0000 @@ -0,0 +1,7 @@ +TortoiseSVN - SVG emblems/overlays +Licensed under: GPL v2 or later + +Except: +emblem-rabbitvcs-calculating.svg: (C) 2009 Bruce van der Kooij +emblem-rabbitvcs-error.svg: (C) 2009 Jason Heeris +Licensed under: GPL v2 or later diff -Nru rabbitvcs-0.13.1/debian/changelog rabbitvcs-0.15.0.5/debian/changelog --- rabbitvcs-0.13.1/debian/changelog 2011-01-19 23:50:54.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/changelog 2012-04-20 08:16:32.000000000 +0000 @@ -1,3 +1,43 @@ +rabbitvcs (0.15.0.5-1~precise1~ppa1) precise; urgency=low + + * No-change backport to precise + + -- Micah Gersten Fri, 20 Apr 2012 03:16:32 -0500 + +rabbitvcs (0.15.0.5-1) unstable; urgency=low + + * Team upload. + + [ Arthur de Jong ] + * New upstream release (Closes: #618934) (LP: #741562, #952719): + - Includes new client for Nautilus 3 (Closes: #633113, #644690, #647999) + (LP: #876514). + - Fix a problem with rename a file (Closes: #585859). + - Allows entering repository URL when starting the browser + (Closes: #619644). + * Cherry-pick upstream change that implements a gedit 3 plugin and update + packaging according to new directory layout (closes: #635123). + * Update package descriptions to match upstream's (Closes: #580716) + (LP: #748304). + * Drop dependency on glade (not used in 0.15). + * Add missing dependency on python-simplejson (LP: #769742) + * Have rabbitvcs-nautilus Conflicts/Replaces rabbitvcs-nautilus3 to + ensure smooth upgrades for people running upstream provided packages. + * Update debian/copyright and switch to latest machine-readable format. + * Move packaging to Python Applications Packaging Team repository, + updating maintainer and Vcs-* fields. + * Switch to using dh_python2. + * Change package section to vcs (Closes: #626809). + * Bump Standards-Version to 3.9.3. + + [ Jakub Wilk ] + * Add Vcs-* fields. + + [ Sameer Rahmani ] + * watch file fixed. + + -- Arthur de Jong Wed, 21 Mar 2012 23:09:27 +0100 + rabbitvcs (0.13.1-2) unstable; urgency=low * Team upload diff -Nru rabbitvcs-0.13.1/debian/clean rabbitvcs-0.15.0.5/debian/clean --- rabbitvcs-0.13.1/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/clean 2012-03-18 07:25:47.000000000 +0000 @@ -0,0 +1,2 @@ +rabbitvcs/buildinfo.py + diff -Nru rabbitvcs-0.13.1/debian/control rabbitvcs-0.15.0.5/debian/control --- rabbitvcs-0.13.1/debian/control 2011-01-19 23:29:48.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/control 2012-03-19 21:20:19.000000000 +0000 @@ -1,68 +1,70 @@ Source: rabbitvcs -Maintainer: Debian Python Modules Team +Maintainer: Python Applications Packaging Team Uploaders: W. Martin Borgert -Section: devel +Section: vcs Priority: optional Build-Depends: debhelper (>= 7), - python (>= 2.5.2) -Build-Depends-Indep: python-support (>= 0.5.3), - pkg-config (>= 0.20) -Standards-Version: 3.8.4 -XS-Python-Version: >= 2.5 + python (>= 2.6.6-3~) +Build-Depends-Indep: pkg-config (>= 0.20) +Standards-Version: 3.9.3 +X-Python-Version: >= 2.5 Homepage: http://www.rabbitvcs.org +Vcs-Svn: svn://svn.debian.org/svn/python-apps/packages/rabbitvcs/trunk/ +Vcs-Browser: http://anonscm.debian.org/viewvc/python-apps/packages/rabbitvcs/trunk/ Package: rabbitvcs-core Architecture: all Depends: ${misc:Depends}, ${python:Depends}, python-gtk2 (>= 2.12.1), - python-glade2 (>= 2.12.1), python-gobject (>= 2.14.1), python-svn (>= 1.5.2), python-dbus (>= 0.82.4), python-configobj (>= 4.4.0), subversion (>= 1.4.6), - meld (>=1.1.2), + meld (>=1.1.2), ipython (>=0.7.1), - hicolor-icon-theme (>= 0.10-2) + hicolor-icon-theme (>= 0.10-2), + python-dulwich, + python-simplejson Conflicts: nautilussvn, rabbitvcs Replaces: nautilussvn Description: Easy version control RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. There are - extensions for Nautilus, Thunar and GEdit, and a simple command-line interface. - . - RabbitVCS currently only supports Subversion. + straightforward access to the version control systems SVN (Subversion) + and Git. There are extensions for Nautilus and gedit, and a simple + command-line interface. Package: rabbitvcs-cli Architecture: all Depends: ${misc:Depends}, ${python:Depends}, - rabbitvcs-core (>= 0.13.1) + rabbitvcs-core (>= 0.15) Description: Command line interface for RabbitVCS RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - command-line interface. + straightforward access to the version control systems SVN (Subversion) + and Git. This is the command-line interface. Package: rabbitvcs-gedit Architecture: all Depends: ${misc:Depends}, gedit, - rabbitvcs-core (>= 0.13.1) + rabbitvcs-core (>= 0.15) Description: Gedit extension for RabbitVCS RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for gedit text editor. + straightforward access to the version control systems SVN (Subversion) + and Git. This is the extension for gedit text editor. Package: rabbitvcs-nautilus +Conflicts: rabbitvcs-nautilus3 +Replaces: rabbitvcs-nautilus3 Architecture: all Depends: ${misc:Depends}, - nautilus, - python-gnome2, - python-nautilus (>= 0.5.0), - rabbitvcs-core (>= 0.13.1) + nautilus (>= 3~), + python-nautilus (>= 1.0~), + python-gobject (>= 2.28.2~), + rabbitvcs-core (>= 0.15) Description: Nautilus extension for RabbitVCS RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Nautilus file manager. - + straightforward access to the version control systems SVN (Subversion) + and Git. This is the extension for the Nautilus file manager. diff -Nru rabbitvcs-0.13.1/debian/copyright rabbitvcs-0.15.0.5/debian/copyright --- rabbitvcs-0.13.1/debian/copyright 2011-01-19 23:03:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/copyright 2012-03-18 14:05:17.000000000 +0000 @@ -1,69 +1,153 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: RabbitVCS +Upstream-Contact: RabbitVCS Team Source: http://code.google.com/p/rabbitvcs/ Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris +Copyright: + Copyright (C) 2006-2008 Jason Field + Copyright (C) 2007-2009 Bruce van der Kooij + Copyright (C) 2008-2010 Adam Plumb + Copyright (C) 2009-2010 Jason Heeris License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - -Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg -Copyright: TortoiseSVN -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/util/decorators.py -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2005-2009, Bastian Kleineidam - 2009, Jason Heeris + RabbitVCS 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 2 of the License, or + (at your option) any later version. + . + RabbitVCS 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. + . + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/ui/renderers/graphcell.py +Copyright: + Copyright 2005 Canonical Ltd. License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/vcs/git/gittyup/_configobj/configobj.py +Copyright: + Copyright (C) 2005-2010 Michael Foord + Copyright (C) 2005-2010 Nicola Larosa +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Michael Foord nor the name of Voidspace + may be used to endorse or promote products derived from this + software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Files: rabbitvcs/debug/ipython_view.py -Copyright: 2007, IBM Corporation -License: BSD - On Debian systems the full text of the BSD License can be found in - the '/usr/share/common-licenses/BSD' file. +Copyright: + Copyright (c) 2007 IBM Corporation +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of the IBM nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. Files: rabbitvcs/ui/wraplabel.py -Copyright: 2005, VMware Inc. +Copyright: + Copyright (c) 2005 VMware, Inc. License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +Files: data/icons/hicolor/scalable/emblems/* +Copyright: + TortoiseSVN + Copyright (C) 2009 Bruce van der Kooij + Copyright (C) 2009 Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: data/icons/hicolor/scalable/actions/* +Copyright: + Andreas Nilsson + Garrett LeSage + Jakub Steiner + Kalle Persson + Lapo Calamandrei + Ricardo 'Rick' González + Steven Garrity + System Run + Trashbin + Tuomas Kuosmanen + Ulisse Perusin +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: debian/* +Copyright: + Copyright (C) 2006-2008 Jason Field + Copyright (C) 2007-2008 Bruce van der Kooij + Copyright (C) 2008-2008 Adam Plumb + Copyright (C) 2009-2011 Jason Heeris +License: GPL-3+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-3' + file. diff -Nru rabbitvcs-0.13.1/debian/patches/50_fix_gedit3_plugin.patch rabbitvcs-0.15.0.5/debian/patches/50_fix_gedit3_plugin.patch --- rabbitvcs-0.13.1/debian/patches/50_fix_gedit3_plugin.patch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/patches/50_fix_gedit3_plugin.patch 2012-03-19 21:19:01.000000000 +0000 @@ -0,0 +1,309 @@ +Description: Fix the gedit plugin for Gedit3 +From: Adam Plumb +Origin: upstream, http://code.google.com/p/rabbitvcs/source/detail?r=3022 +Bug: http://code.google.com/p/rabbitvcs/issues/detail?id=622 +Bug-Debian: http://bugs.debian.org/635123 + +--- a/rabbitvcs/util/contextmenuitems.py ++++ b/rabbitvcs/util/contextmenuitems.py +@@ -204,7 +204,7 @@ + ) + + return action +- ++ + def make_gtk_menu_item(self, id_magic = None): + action = self.make_action(id_magic) + +@@ -217,6 +217,17 @@ + else: + menuitem = action.create_menu_item() + ++ return menuitem ++ ++ def make_gtk3_menu_item(self, id_magic = None): ++ action = self.make_action(id_magic) ++ ++ if self.icon: ++ menuitem = action.create_menu_item() ++ menuitem.set_image(gtk.Image.new_from_icon_name(self.icon, gtk.IconSize.MENU)) ++ else: ++ menuitem = action.create_menu_item() ++ + return menuitem + + def make_nautilus_menu_item(self, id_magic = None): +--- a/clients/gedit/rabbitvcs.gedit-plugin ++++ /dev/null +@@ -1,10 +0,0 @@ +-[Gedit Plugin] +-Loader=python +-Module=rabbitvcs-plugin +-IAge=2 +-Name=RabbitVCS +-Description=RabbitVCS plugin for Gedit +-Authors=Adam Plumb +-Copyright=Copyright © 2009 Adam Plumb +-Website=http://www.rabbitvcs.org +- +--- /dev/null ++++ b/clients/gedit/rabbitvcs-gedit2.gedit-plugin +@@ -0,0 +1,10 @@ ++[Gedit Plugin] ++Loader=python ++Module=rabbitvcs-plugin ++IAge=2 ++Name=RabbitVCS ++Description=RabbitVCS plugin for Gedit ++Authors=Adam Plumb ++Copyright=Copyright © 2011 Adam Plumb ++Website=http://www.rabbitvcs.org ++ +--- a/clients/gedit/rabbitvcs-plugin.py ++++ b/clients/gedit/rabbitvcs-plugin.py +@@ -2,7 +2,7 @@ + # This is a Gedit plugin to allow for RabbitVCS integration in the Gedit + # text editor. + # +-# Copyright (C) 2008-2008 by Adam Plumb ++# Copyright (C) 2008-2011 by Adam Plumb + # + # RabbitVCS is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +@@ -21,8 +21,17 @@ + from gettext import gettext as _ + + import os +-import gtk +-import gedit ++ ++try: ++ from gi.repository import Gedit ++ os.environ["NAUTILUS_PYTHON_REQUIRE_GTK3"] = "1" ++ GTK3 = True ++except ImportError: ++ import gedit ++ GTK3 = False ++ ++from gi.repository import GObject ++from gi.repository import Gtk as gtk + + import rabbitvcs.util.helper + from rabbitvcs.vcs import create_vcs_instance +@@ -327,8 +336,15 @@ + + manager = self._window.get_ui_manager() + for menu_path in self._menu_paths: +- widget = manager.get_widget(menu_path) +- self._menubar_menu.update_action(widget.get_action()) ++ # Gtk3 changes how we access a widget's action. Get it from the ++ # UI Manager instead of the widget directly ++ if hasattr(manager, "get_action"): ++ action = manager.get_action(menu_path) ++ else: ++ widget = manager.get_widget(menu_path) ++ action = widget.get_action() ++ ++ self._menubar_menu.update_action(action) + + # Menu activate handlers + def reload_settings(self, proc): +@@ -337,49 +353,100 @@ + def on_context_menu_command_finished(self): + self.update_ui() + +-class RabbitVCSPlugin(gedit.Plugin): +- def __init__(self): +- gedit.Plugin.__init__(self) +- self._instances = {} +- self.id_name = "RabbitVCSContextMenuID" +- +- def activate(self, window): +- self._instances[window] = RabbitVCSWindowHelper(self, window) +- +- handler_ids = [] +- for signal in ('tab-added', 'tab-removed'): +- method = getattr(self, 'on_window_' + signal.replace('-', '_')) +- handler_ids.append(window.connect(signal, method)) +- +- window.set_data(self.id_name, handler_ids) +- if window in self._instances: +- for view in window.get_views(): +- self._instances[window].connect_view(view, self.id_name) +- +- def deactivate(self, window): +- widgets = [window] + window.get_views() +- for widget in widgets: +- handler_ids = widget.get_data(self.id_name) +- if handler_ids is not None: +- for handler_id in handler_ids: +- widget.disconnect(handler_id) +- widget.set_data(self.id_name, None) +- +- if window in self._instances: +- self._instances[window].deactivate() +- del self._instances[window] +- +- def update_ui(self, window): +- if window in self._instances: +- self._instances[window].update_ui() +- +- def on_window_tab_added(self, window, tab): +- if window in self._instances: +- self._instances[window].connect_view(tab.get_view(), self.id_name) +- +- def on_window_tab_removed(self, window, tab): +- if window in self._instances: +- self._instances[window].disconnect_view(tab.get_view(), self.id_name) ++if GTK3: ++ class RabbitVCSGedit3Plugin(GObject.Object, Gedit.WindowActivatable): ++ __gtype_name__ = "RabbitVCSGedit3Plugin" ++ window = GObject.property(type=Gedit.Window) ++ ++ def __init__(self): ++ GObject.Object.__init__(self) ++ self._instances = {} ++ self.id_name = "RabbitVCSContextMenuID" ++ ++ def do_activate(self): ++ self._instances[self.window] = RabbitVCSWindowHelper(self, self.window) ++ ++ handler_ids = [] ++ for signal in ('tab-added', 'tab-removed'): ++ method = getattr(self, 'on_window_' + signal.replace('-', '_')) ++ handler_ids.append(self.window.connect(signal, method)) ++ ++ self.window.set_data(self.id_name, handler_ids) ++ if self.window in self._instances: ++ for view in self.window.get_views(): ++ self._instances[self.window].connect_view(view, self.id_name) ++ ++ def do_deactivate(self): ++ widgets = [self.window] + self.window.get_views() ++ for widget in widgets: ++ handler_ids = widget.get_data(self.id_name) ++ if handler_ids is not None: ++ for handler_id in handler_ids: ++ widget.disconnect(handler_id) ++ widget.set_data(self.id_name, None) ++ ++ if self.window in self._instances: ++ self._instances[self.window].deactivate() ++ del self._instances[self.window] ++ ++ def do_update_state(self): ++ self.update_ui() ++ ++ def update_ui(self): ++ if self.window in self._instances: ++ self._instances[self.window].update_ui() ++ ++ def on_window_tab_added(self, window, tab): ++ if self.window in self._instances: ++ self._instances[self.window].connect_view(tab.get_view(), self.id_name) ++ ++ def on_window_tab_removed(self, window, tab): ++ if window in self._instances: ++ self._instances[self.window].disconnect_view(tab.get_view(), self.id_name) ++else: ++ class RabbitVCSGedit2Plugin(gedit.Plugin): ++ def __init__(self): ++ gedit.Plugin.__init__(self) ++ self._instances = {} ++ self.id_name = "RabbitVCSContextMenuID" ++ ++ def activate(self, window): ++ self._instances[window] = RabbitVCSWindowHelper(self, window) ++ ++ handler_ids = [] ++ for signal in ('tab-added', 'tab-removed'): ++ method = getattr(self, 'on_window_' + signal.replace('-', '_')) ++ handler_ids.append(window.connect(signal, method)) ++ ++ window.set_data(self.id_name, handler_ids) ++ if window in self._instances: ++ for view in window.get_views(): ++ self._instances[window].connect_view(view, self.id_name) ++ ++ def deactivate(self, window): ++ widgets = [window] + window.get_views() ++ for widget in widgets: ++ handler_ids = widget.get_data(self.id_name) ++ if handler_ids is not None: ++ for handler_id in handler_ids: ++ widget.disconnect(handler_id) ++ widget.set_data(self.id_name, None) ++ ++ if window in self._instances: ++ self._instances[window].deactivate() ++ del self._instances[window] ++ ++ def update_ui(self, window): ++ if window in self._instances: ++ self._instances[window].update_ui() ++ ++ def on_window_tab_added(self, window, tab): ++ if window in self._instances: ++ self._instances[window].connect_view(tab.get_view(), self.id_name) ++ ++ def on_window_tab_removed(self, window, tab): ++ if window in self._instances: ++ self._instances[window].disconnect_view(tab.get_view(), self.id_name) + + class MenuIgnoreByFilename(MenuItem): + identifier = "RabbitVCS::Ignore_By_Filename" +@@ -593,7 +660,10 @@ + signal = "activate" + + def make_menu_item(self, item, id_magic): +- return item.make_gtk_menu_item(id_magic) ++ if GTK3: ++ return item.make_gtk3_menu_item(id_magic) ++ else: ++ return item.make_gtk_menu_item(id_magic) + + def attach_submenu(self, menu_node, submenu_list): + submenu = gtk.Menu() +--- /dev/null ++++ b/clients/gedit/rabbitvcs-gedit3.plugin +@@ -0,0 +1,9 @@ ++[Plugin] ++Loader=python ++Module=rabbitvcs-plugin ++IAge=3 ++Name=RabbitVCS ++Description=RabbitVCS plugin for Gedit ++Authors=Adam Plumb ++Copyright=Copyright © 2011 Adam Plumb ++Website=http://www.rabbitvcs.org +--- a/clients/gedit/README ++++ b/clients/gedit/README +@@ -8,14 +8,24 @@ + * gedit + * (all other RabbitVCS requirements) + +-To install: ++To install for Gedit 3: + To install for all users, copy rabbitvcs-plugin.py and +- rabbitvcs.gedit-plugin to: ++ rabbitvcs-gedit3.plugin to: ++ /usr/share/gedit/plugins ++ ++ To install for a single user, copy rabbitvcs-plugin.py and ++ rabbitvcs-gedit3.plugin to: ++ ~/.local/share/gedit/plugins ++ ++To install for Gedit 2: ++ To install for all users, copy rabbitvcs-plugin.py and ++ rabbitvcs-gedit2.gedit-plugin to: + /usr/lib/gedit-2/plugins + + To install for a single user, copy rabbitvcs-plugin.py and +- rabbitvcs.gedit-plugin to: +- ~/.gnome2/gedit/plugins ++ rabbitvcs-gedit2.gedit-plugin to: ++ ~/.gnome2/gedit/plugins ++ + + Troubleshooting: + diff -Nru rabbitvcs-0.13.1/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/debian/patches/99_setup.py.patch 2011-01-19 23:03:57.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/patches/99_setup.py.patch 2012-03-19 20:45:24.000000000 +0000 @@ -4,25 +4,20 @@ Forwarded: not-needed Author: Jason Heeris -diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.13/setup.py rabbitvcs-0.13.new/setup.py ---- rabbitvcs-0.13/setup.py 2010-01-30 22:39:56.000000000 +0800 -+++ rabbitvcs-0.13.new/setup.py 2010-01-30 22:50:29.000000000 +0800 -@@ -141,10 +141,11 @@ +--- a/setup.py ++++ b/setup.py +@@ -156,13 +156,4 @@ + # Post installation # - # Make sure the icon cache is deleted and recreated +-# Make sure the icon cache is deleted and recreated -if sys.argv[1] == "install": -- print "Running gtk-update-icon-cache" -- -- subprocess.Popen( -- ["gtk-update-icon-cache", icon_theme_directory], -- stdout=subprocess.PIPE -- ).communicate()[0] -+# Debian: this is not needed since hicolor-icon-cache (0.10-2) -+# if sys.argv[1] == "install": -+# print "Running gtk-update-icon-cache" -+# -+# subprocess.Popen( -+# ["gtk-update-icon-cache", icon_theme_directory], -+# stdout=subprocess.PIPE -+# ).communicate()[0] +- +- if os.uname()[0] != 'Darwin': +- print "Running gtk-update-icon-cache" +- +- subprocess.Popen( +- ["gtk-update-icon-cache", icon_theme_directory], +- stdout=subprocess.PIPE +- ).communicate()[0] ++# Icon cache rebuilding not needed diff -Nru rabbitvcs-0.13.1/debian/patches/series rabbitvcs-0.15.0.5/debian/patches/series --- rabbitvcs-0.13.1/debian/patches/series 2011-01-19 23:03:57.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/patches/series 2012-03-19 21:18:05.000000000 +0000 @@ -1 +1,2 @@ +50_fix_gedit3_plugin.patch 99_setup.py.patch diff -Nru rabbitvcs-0.13.1/debian/pycompat rabbitvcs-0.15.0.5/debian/pycompat --- rabbitvcs-0.13.1/debian/pycompat 2011-01-19 23:03:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/debian/pyversions rabbitvcs-0.15.0.5/debian/pyversions --- rabbitvcs-0.13.1/debian/pyversions 2011-01-19 23:03:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/debian/rabbitvcs-gedit.install 2011-01-19 23:03:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/rabbitvcs-gedit.install 2012-03-19 21:19:36.000000000 +0000 @@ -1,2 +1,2 @@ -clients/gedit/rabbitvcs-plugin.py usr/lib/gedit-2/plugins -clients/gedit/rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins +clients/gedit/rabbitvcs-plugin.py usr/lib/gedit/plugins +clients/gedit/rabbitvcs-gedit3.plugin usr/lib/gedit/plugins diff -Nru rabbitvcs-0.13.1/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/debian/rabbitvcs-nautilus.install 2011-01-19 23:03:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/rabbitvcs-nautilus.install 2012-03-19 20:42:20.000000000 +0000 @@ -1 +1 @@ -clients/nautilus/RabbitVCS.py usr/lib/nautilus/extensions-2.0/python +clients/nautilus-3.0/RabbitVCS.py usr/share/nautilus-python/extensions diff -Nru rabbitvcs-0.13.1/debian/rules rabbitvcs-0.15.0.5/debian/rules --- rabbitvcs-0.13.1/debian/rules 2011-01-19 23:03:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/rules 2012-03-18 08:51:04.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/make -f -# Uncomment this to turn on verbose mode. +# Uncomment this to turn on verbose mode. # export DH_VERBOSE=1 %: - dh $@ + dh $@ --with python2 diff -Nru rabbitvcs-0.13.1/debian/watch rabbitvcs-0.15.0.5/debian/watch --- rabbitvcs-0.13.1/debian/watch 2011-01-19 23:03:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/debian/watch 2012-03-18 07:52:50.000000000 +0000 @@ -1,3 +1,2 @@ version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-(.*).tar.gz +http://code.google.com/p/rabbitvcs/downloads/list?can=1 .*/rabbitvcs-(\d[\d\.]*)\.(?:zip|tgz|tbz2|txz|tar\.gz|tar\.bz2|tar\.xz) Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/ca/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/ca/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/cs/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/cs/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/de/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/de/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/en_GB/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/en_GB/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/es/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/es/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/es_CL/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/es_CL/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/fa/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/fa/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/fi/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/fi/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/fr/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/fr/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/he/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/he/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/hr/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/hr/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/hu/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/hu/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/it/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/it/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/ja/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/ja/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/nb/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/nb/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/nl/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/nl/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/oc/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/oc/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/pl/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/pl/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/pt_BR/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/pt_BR/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/ro/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/ro/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/ru/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/ru/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/sk/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/sk/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/sl/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/sl/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/sr/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/sr/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/sv/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/sv/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/th/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/th/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/zh_CN/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/zh_CN/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/locale/zh_TW/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/locale/zh_TW/LC_MESSAGES/RabbitVCS.mo differ diff -Nru rabbitvcs-0.13.1/packages/cli/debian/changelog rabbitvcs-0.15.0.5/packages/cli/debian/changelog --- rabbitvcs-0.13.1/packages/cli/debian/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-cli (0.13-1) unstable; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:46:10 +0800 - -rabbitvcs-cli (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/cli/debian/compat rabbitvcs-0.15.0.5/packages/cli/debian/compat --- rabbitvcs-0.13.1/packages/cli/debian/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/cli/debian/control rabbitvcs-0.15.0.5/packages/cli/debian/control --- rabbitvcs-0.13.1/packages/cli/debian/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -Source: rabbitvcs-cli -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-cli -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Command line interface for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - command-line interface. diff -Nru rabbitvcs-0.13.1/packages/cli/debian/copyright rabbitvcs-0.15.0.5/packages/cli/debian/copyright --- rabbitvcs-0.13.1/packages/cli/debian/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/cli/debian/pycompat rabbitvcs-0.15.0.5/packages/cli/debian/pycompat --- rabbitvcs-0.13.1/packages/cli/debian/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/cli/debian/pyversions rabbitvcs-0.15.0.5/packages/cli/debian/pyversions --- rabbitvcs-0.13.1/packages/cli/debian/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/cli/debian/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/cli/debian/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/cli/debian/rabbitvcs.1 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -.\"Created with GNOME Manpages Editor Wizard -.\"http://sourceforge.net/projects/gmanedit2 -.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" - -.SH NAME -rabbitvcs \- Integrated version control for Nautilus - -.SH SYNOPSIS -.B rabbitvcs - [path1] [path2] ... -.br - -.SH DESCRIPTION -.B rabbitvcs -provides integrated support for various version control version systems in -the Nautilus file manager (currently only subversion). This command opens -a new -.B nautilus -window and applies the given VCS command. - -.SH OPTIONS -.B -.IP module -The VCS command to invoke. Available modules are: about, add, blame, checkout, -cleanup, commit, create, delete, export, ignore, import, lock, log, merge, -properties, relocate, rename, resolve, revert, settings, switch, unlock, update, -updateto - -.B -.IP path -The file(s) or directory(\-ies) to apply the action to. - -.SH "SEE ALSO" -.B nautilus(1) -, -.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/cli/debian/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/cli/debian/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/cli/debian/rabbitvcs-cli.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/cli/debian/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/cli/debian/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/cli/debian/rabbitvcs-cli.manpages 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/cli/debian/rules rabbitvcs-0.15.0.5/packages/cli/debian/rules --- rabbitvcs-0.13.1/packages/cli/debian/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installman diff -Nru rabbitvcs-0.13.1/packages/cli/debian/watch rabbitvcs-0.15.0.5/packages/cli/debian/watch --- rabbitvcs-0.13.1/packages/cli/debian/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/debian/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-cli-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/changelog rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/changelog --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-cli (0.13-1~hardy) hardy; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:46:10 +0800 - -rabbitvcs-cli (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/compat rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/compat --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/control rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/control --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -Source: rabbitvcs-cli -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-cli -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Command line interface for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - command-line interface. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/copyright rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/copyright --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/pycompat rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/pycompat --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/pyversions rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/pyversions --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/rabbitvcs.1 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -.\"Created with GNOME Manpages Editor Wizard -.\"http://sourceforge.net/projects/gmanedit2 -.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" - -.SH NAME -rabbitvcs \- Integrated version control for Nautilus - -.SH SYNOPSIS -.B rabbitvcs - [path1] [path2] ... -.br - -.SH DESCRIPTION -.B rabbitvcs -provides integrated support for various version control version systems in -the Nautilus file manager (currently only subversion). This command opens -a new -.B nautilus -window and applies the given VCS command. - -.SH OPTIONS -.B -.IP module -The VCS command to invoke. Available modules are: about, add, blame, checkout, -cleanup, commit, create, delete, export, ignore, import, lock, log, merge, -properties, relocate, rename, resolve, revert, settings, switch, unlock, update, -updateto - -.B -.IP path -The file(s) or directory(\-ies) to apply the action to. - -.SH "SEE ALSO" -.B nautilus(1) -, -.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/rabbitvcs-cli.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/rabbitvcs-cli.manpages 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/rules rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/rules --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installman diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/watch rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/watch --- rabbitvcs-0.13.1/packages/cli/ubuntu-hardy/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-hardy/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-cli-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/changelog rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/changelog --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-cli (0.13-1~intrepid) intrepid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:46:10 +0800 - -rabbitvcs-cli (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/compat rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/compat --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/control rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/control --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -Source: rabbitvcs-cli -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-cli -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Command line interface for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - command-line interface. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/copyright rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/copyright --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/pycompat rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/pycompat --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/pyversions rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/pyversions --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/rabbitvcs.1 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -.\"Created with GNOME Manpages Editor Wizard -.\"http://sourceforge.net/projects/gmanedit2 -.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" - -.SH NAME -rabbitvcs \- Integrated version control for Nautilus - -.SH SYNOPSIS -.B rabbitvcs - [path1] [path2] ... -.br - -.SH DESCRIPTION -.B rabbitvcs -provides integrated support for various version control version systems in -the Nautilus file manager (currently only subversion). This command opens -a new -.B nautilus -window and applies the given VCS command. - -.SH OPTIONS -.B -.IP module -The VCS command to invoke. Available modules are: about, add, blame, checkout, -cleanup, commit, create, delete, export, ignore, import, lock, log, merge, -properties, relocate, rename, resolve, revert, settings, switch, unlock, update, -updateto - -.B -.IP path -The file(s) or directory(\-ies) to apply the action to. - -.SH "SEE ALSO" -.B nautilus(1) -, -.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/rabbitvcs-cli.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/rabbitvcs-cli.manpages 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/rules rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/rules --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installman diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/watch rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/watch --- rabbitvcs-0.13.1/packages/cli/ubuntu-intrepid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-intrepid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-cli-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/changelog rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/changelog --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-cli (0.13-1~jaunty) jaunty; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:46:10 +0800 - -rabbitvcs-cli (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/compat rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/compat --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/control rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/control --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -Source: rabbitvcs-cli -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-cli -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Command line interface for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - command-line interface. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/copyright rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/copyright --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/pycompat rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/pycompat --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/pyversions rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/pyversions --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/rabbitvcs.1 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -.\"Created with GNOME Manpages Editor Wizard -.\"http://sourceforge.net/projects/gmanedit2 -.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" - -.SH NAME -rabbitvcs \- Integrated version control for Nautilus - -.SH SYNOPSIS -.B rabbitvcs - [path1] [path2] ... -.br - -.SH DESCRIPTION -.B rabbitvcs -provides integrated support for various version control version systems in -the Nautilus file manager (currently only subversion). This command opens -a new -.B nautilus -window and applies the given VCS command. - -.SH OPTIONS -.B -.IP module -The VCS command to invoke. Available modules are: about, add, blame, checkout, -cleanup, commit, create, delete, export, ignore, import, lock, log, merge, -properties, relocate, rename, resolve, revert, settings, switch, unlock, update, -updateto - -.B -.IP path -The file(s) or directory(\-ies) to apply the action to. - -.SH "SEE ALSO" -.B nautilus(1) -, -.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/rabbitvcs-cli.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/rabbitvcs-cli.manpages 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/rules rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/rules --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installman diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/watch rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/watch --- rabbitvcs-0.13.1/packages/cli/ubuntu-jaunty/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-jaunty/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-cli-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/changelog rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/changelog --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-cli (0.13-1~karmic) karmic; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:46:10 +0800 - -rabbitvcs-cli (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/compat rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/compat --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/control rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/control --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -Source: rabbitvcs-cli -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-cli -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Command line interface for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - command-line interface. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/copyright rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/copyright --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/pycompat rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/pycompat --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/pyversions rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/pyversions --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/rabbitvcs.1 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -.\"Created with GNOME Manpages Editor Wizard -.\"http://sourceforge.net/projects/gmanedit2 -.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" - -.SH NAME -rabbitvcs \- Integrated version control for Nautilus - -.SH SYNOPSIS -.B rabbitvcs - [path1] [path2] ... -.br - -.SH DESCRIPTION -.B rabbitvcs -provides integrated support for various version control version systems in -the Nautilus file manager (currently only subversion). This command opens -a new -.B nautilus -window and applies the given VCS command. - -.SH OPTIONS -.B -.IP module -The VCS command to invoke. Available modules are: about, add, blame, checkout, -cleanup, commit, create, delete, export, ignore, import, lock, log, merge, -properties, relocate, rename, resolve, revert, settings, switch, unlock, update, -updateto - -.B -.IP path -The file(s) or directory(\-ies) to apply the action to. - -.SH "SEE ALSO" -.B nautilus(1) -, -.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/rabbitvcs-cli.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/rabbitvcs-cli.manpages 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/rules rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/rules --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installman diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/watch rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/watch --- rabbitvcs-0.13.1/packages/cli/ubuntu-karmic/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-karmic/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-cli-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/changelog rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/changelog --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-cli (0.13-1~lucid) lucid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:46:10 +0800 - -rabbitvcs-cli (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/compat rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/compat --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/control rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/control --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -Source: rabbitvcs-cli -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-cli -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Command line interface for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - command-line interface. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/copyright rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/copyright --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/pycompat rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/pycompat --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/pyversions rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/pyversions --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/rabbitvcs.1 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -.\"Created with GNOME Manpages Editor Wizard -.\"http://sourceforge.net/projects/gmanedit2 -.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" - -.SH NAME -rabbitvcs \- Integrated version control for Nautilus - -.SH SYNOPSIS -.B rabbitvcs - [path1] [path2] ... -.br - -.SH DESCRIPTION -.B rabbitvcs -provides integrated support for various version control version systems in -the Nautilus file manager (currently only subversion). This command opens -a new -.B nautilus -window and applies the given VCS command. - -.SH OPTIONS -.B -.IP module -The VCS command to invoke. Available modules are: about, add, blame, checkout, -cleanup, commit, create, delete, export, ignore, import, lock, log, merge, -properties, relocate, rename, resolve, revert, settings, switch, unlock, update, -updateto - -.B -.IP path -The file(s) or directory(\-ies) to apply the action to. - -.SH "SEE ALSO" -.B nautilus(1) -, -.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/rabbitvcs-cli.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/rabbitvcs-cli.manpages 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/rules rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/rules --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installman diff -Nru rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/watch rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/watch --- rabbitvcs-0.13.1/packages/cli/ubuntu-lucid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/cli/ubuntu-lucid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-cli-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/core/debian/changelog rabbitvcs-0.15.0.5/packages/core/debian/changelog --- rabbitvcs-0.13.1/packages/core/debian/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-core (0.13-1) unstable; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 20:37:52 +0800 - -rabbitvcs-core (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:27:21 +0800 diff -Nru rabbitvcs-0.13.1/packages/core/debian/compat rabbitvcs-0.15.0.5/packages/core/debian/compat --- rabbitvcs-0.13.1/packages/core/debian/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/core/debian/control rabbitvcs-0.15.0.5/packages/core/debian/control --- rabbitvcs-0.13.1/packages/core/debian/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -Source: rabbitvcs-core -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 6.0.4), - cdbs (>= 0.4.51), - python (>= 2.5.2) -Build-Depends-Indep: python-support (>= 0.5.3), - python-central (>= 0.6.5), - pkg-config (>= 0.20), - patchutils (>= 0.2.31) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-core -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python-gtk2 (>= 2.12.1), - python-glade2 (>= 2.12.1), - python-gobject (>= 2.14.1), - python-svn (>= 1.5.2), - python-configobj (>= 4.4.0), - python-dbus (>= 0.82.4), - subversion (>= 1.4.6), - meld (>=1.1.2), - ipython (>=0.7.1), - hicolor-icon-theme (>= 0.10-2) -Conflicts: nautilussvn, rabbitvcs -Replaces: nautilussvn -Description: Easy version control - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. There are - extensions for Nautilus, Thunar and GEdit, and a simple command-line interface. - . - RabbitVCS currently only supports Subversion. diff -Nru rabbitvcs-0.13.1/packages/core/debian/copyright rabbitvcs-0.15.0.5/packages/core/debian/copyright --- rabbitvcs-0.13.1/packages/core/debian/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - -Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg -Copyright: TortoiseSVN -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/lib/decorators.py -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2005-2009, Bastian Kleineidam - 2009, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/debug/ipython_view.py -Copyright: 2007, IBM Corporation -License: BSD - On Debian systems the full text of the BSD License can be found in - the '/usr/share/common-licenses/BSD' file. - -Files: rabbitvcs/ui/wraplabel.py -Copyright: 2005, VMware Inc. -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/core/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/core/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/core/debian/patches/99_setup.py.patch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.13/setup.py rabbitvcs-0.13.new/setup.py ---- rabbitvcs-0.13/setup.py 2010-01-30 22:39:56.000000000 +0800 -+++ rabbitvcs-0.13.new/setup.py 2010-01-30 22:50:29.000000000 +0800 -@@ -141,10 +141,11 @@ - # - - # Make sure the icon cache is deleted and recreated --if sys.argv[1] == "install": -- print "Running gtk-update-icon-cache" -- -- subprocess.Popen( -- ["gtk-update-icon-cache", icon_theme_directory], -- stdout=subprocess.PIPE -- ).communicate()[0] -+# Debian: this is not needed since hicolor-icon-cache (0.10-2) -+# if sys.argv[1] == "install": -+# print "Running gtk-update-icon-cache" -+# -+# subprocess.Popen( -+# ["gtk-update-icon-cache", icon_theme_directory], -+# stdout=subprocess.PIPE -+# ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/core/debian/pycompat rabbitvcs-0.15.0.5/packages/core/debian/pycompat --- rabbitvcs-0.13.1/packages/core/debian/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/core/debian/pyversions rabbitvcs-0.15.0.5/packages/core/debian/pyversions --- rabbitvcs-0.13.1/packages/core/debian/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/core/debian/rules rabbitvcs-0.15.0.5/packages/core/debian/rules --- rabbitvcs-0.13.1/packages/core/debian/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#!/usr/bin/make -f - -DEB_PYTHON_SYSTEM=pysupport - -include /usr/share/cdbs/1/rules/simple-patchsys.mk -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/python-distutils.mk diff -Nru rabbitvcs-0.13.1/packages/core/debian/watch rabbitvcs-0.15.0.5/packages/core/debian/watch --- rabbitvcs-0.13.1/packages/core/debian/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/debian/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-core-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-hardy/changelog rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/changelog --- rabbitvcs-0.13.1/packages/core/ubuntu-hardy/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-core (0.13-1~hardy) hardy; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 20:37:52 +0800 - -rabbitvcs-core (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:27:21 +0800 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-hardy/compat rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/compat --- rabbitvcs-0.13.1/packages/core/ubuntu-hardy/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-hardy/control rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/control --- rabbitvcs-0.13.1/packages/core/ubuntu-hardy/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -Source: rabbitvcs-core -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 6.0.4), - cdbs (>= 0.4.51), - python (>= 2.5.2) -Build-Depends-Indep: python-support (>= 0.5.3), - python-central (>= 0.6.5), - pkg-config (>= 0.20), - libgtk2.0-bin (>= 2.8.20) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-core -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python-gtk2 (>= 2.12.1), - python-glade2 (>= 2.12.1), - python-gobject (>= 2.14.1), - python-svn (>= 1.5.2), - python-configobj (>= 4.4.0), - python-dbus (>= 0.82.4), - subversion (>= 1.4.6), - meld (>=1.1.2), - ipython (>=0.7.1), - hicolor-icon-theme (>= 0.10), - libgtk2.0-bin (>= 2.8.20) -Conflicts: nautilussvn, rabbitvcs -Replaces: nautilussvn -Description: Easy version control - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. There are - extensions for Nautilus, Thunar and GEdit, and a simple command-line interface. - . - RabbitVCS currently only supports Subversion. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-hardy/copyright rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/copyright --- rabbitvcs-0.13.1/packages/core/ubuntu-hardy/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - -Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg -Copyright: TortoiseSVN -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/lib/decorators.py -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2005-2009, Bastian Kleineidam - 2009, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/debug/ipython_view.py -Copyright: 2007, IBM Corporation -License: BSD - On Debian systems the full text of the BSD License can be found in - the '/usr/share/common-licenses/BSD' file. - -Files: rabbitvcs/ui/wraplabel.py -Copyright: 2005, VMware Inc. -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-hardy/pycompat rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/pycompat --- rabbitvcs-0.13.1/packages/core/ubuntu-hardy/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-hardy/pyversions rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/pyversions --- rabbitvcs-0.13.1/packages/core/ubuntu-hardy/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-hardy/rules rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/rules --- rabbitvcs-0.13.1/packages/core/ubuntu-hardy/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#!/usr/bin/make -f - -DEB_PYTHON_SYSTEM=pysupport - -include /usr/share/cdbs/1/rules/simple-patchsys.mk -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/python-distutils.mk diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-hardy/watch rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/watch --- rabbitvcs-0.13.1/packages/core/ubuntu-hardy/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-hardy/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-core-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/changelog rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/changelog --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-core (0.13-1~intrepid) intrepid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 20:37:52 +0800 - -rabbitvcs-core (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:27:21 +0800 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/compat rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/compat --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/control rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/control --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -Source: rabbitvcs-core -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 6.0.4), - cdbs (>= 0.4.51), - python (>= 2.5.2) -Build-Depends-Indep: python-support (>= 0.5.3), - python-central (>= 0.6.5), - pkg-config (>= 0.20), - libgtk2.0-bin (>= 2.8.20) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-core -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python-gtk2 (>= 2.12.1), - python-glade2 (>= 2.12.1), - python-gobject (>= 2.14.1), - python-svn (>= 1.5.2), - python-configobj (>= 4.4.0), - python-dbus (>= 0.82.4), - subversion (>= 1.4.6), - meld (>=1.1.2), - ipython (>=0.7.1), - hicolor-icon-theme (>= 0.10), - libgtk2.0-bin (>= 2.8.20) -Conflicts: nautilussvn, rabbitvcs -Replaces: nautilussvn -Description: Easy version control - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. There are - extensions for Nautilus, Thunar and GEdit, and a simple command-line interface. - . - RabbitVCS currently only supports Subversion. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/copyright rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/copyright --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - -Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg -Copyright: TortoiseSVN -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/lib/decorators.py -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2005-2009, Bastian Kleineidam - 2009, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/debug/ipython_view.py -Copyright: 2007, IBM Corporation -License: BSD - On Debian systems the full text of the BSD License can be found in - the '/usr/share/common-licenses/BSD' file. - -Files: rabbitvcs/ui/wraplabel.py -Copyright: 2005, VMware Inc. -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/postinst rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/postinst --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/postinst 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -#!/bin/sh -e - -# Source debconf module -. /usr/share/debconf/confmodule - -# Identifies the point in the file at which debhelper will insert automatically -# added snippets. -#DEBHELPER# - -# An installation process can be roll backed in which case we don't want to do -# anything. -if [ "$1" != configure ]; then - exit 0 -fi - -# Make sure the icon cache is deleted and recreated -gtk-update-icon-cache /usr/share/icons/hicolor/ diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/pycompat rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/pycompat --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/pyversions rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/pyversions --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/rules rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/rules --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#!/usr/bin/make -f - -DEB_PYTHON_SYSTEM=pysupport - -include /usr/share/cdbs/1/rules/simple-patchsys.mk -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/python-distutils.mk diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/watch rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/watch --- rabbitvcs-0.13.1/packages/core/ubuntu-intrepid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-intrepid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-core-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/changelog rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/changelog --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-core (0.13-1~jaunty) jaunty; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 20:37:52 +0800 - -rabbitvcs-core (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:27:21 +0800 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/compat rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/compat --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/control rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/control --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -Source: rabbitvcs-core -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 6.0.4), - cdbs (>= 0.4.51), - python (>= 2.5.2) -Build-Depends-Indep: python-support (>= 0.5.3), - python-central (>= 0.6.5), - pkg-config (>= 0.20), - libgtk2.0-bin (>= 2.8.20) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-core -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python-gtk2 (>= 2.12.1), - python-glade2 (>= 2.12.1), - python-gobject (>= 2.14.1), - python-svn (>= 1.5.2), - python-configobj (>= 4.4.0), - python-dbus (>= 0.82.4), - subversion (>= 1.4.6), - meld (>=1.1.2), - ipython (>=0.7.1), - hicolor-icon-theme (>= 0.10), - libgtk2.0-bin (>= 2.8.20) -Conflicts: nautilussvn, rabbitvcs -Replaces: nautilussvn -Description: Easy version control - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. There are - extensions for Nautilus, Thunar and GEdit, and a simple command-line interface. - . - RabbitVCS currently only supports Subversion. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/copyright rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/copyright --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - -Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg -Copyright: TortoiseSVN -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/lib/decorators.py -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2005-2009, Bastian Kleineidam - 2009, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/debug/ipython_view.py -Copyright: 2007, IBM Corporation -License: BSD - On Debian systems the full text of the BSD License can be found in - the '/usr/share/common-licenses/BSD' file. - -Files: rabbitvcs/ui/wraplabel.py -Copyright: 2005, VMware Inc. -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/postinst rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/postinst --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/postinst 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -#!/bin/sh -e - -# Source debconf module -. /usr/share/debconf/confmodule - -# Identifies the point in the file at which debhelper will insert automatically -# added snippets. -#DEBHELPER# - -# An installation process can be roll backed in which case we don't want to do -# anything. -if [ "$1" != configure ]; then - exit 0 -fi - -# Make sure the icon cache is deleted and recreated -gtk-update-icon-cache /usr/share/icons/hicolor/ diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/pycompat rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/pycompat --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/pyversions rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/pyversions --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/rules rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/rules --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#!/usr/bin/make -f - -DEB_PYTHON_SYSTEM=pysupport - -include /usr/share/cdbs/1/rules/simple-patchsys.mk -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/python-distutils.mk diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/watch rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/watch --- rabbitvcs-0.13.1/packages/core/ubuntu-jaunty/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-jaunty/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-core-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/changelog rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/changelog --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-core (0.13-1~karmic) karmic; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 20:37:52 +0800 - -rabbitvcs-core (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:27:21 +0800 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/compat rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/compat --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/control rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/control --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -Source: rabbitvcs-core -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 6.0.4), - cdbs (>= 0.4.51), - python (>= 2.5.2) -Build-Depends-Indep: python-support (>= 0.5.3), - python-central (>= 0.6.5), - pkg-config (>= 0.20), - patchutils (>= 0.2.31) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-core -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python-gtk2 (>= 2.12.1), - python-glade2 (>= 2.12.1), - python-gobject (>= 2.14.1), - python-svn (>= 1.5.2), - python-configobj (>= 4.4.0), - python-dbus (>= 0.82.4), - subversion (>= 1.4.6), - meld (>=1.1.2), - ipython (>=0.7.1), - hicolor-icon-theme (>= 0.10-2) -Conflicts: nautilussvn, rabbitvcs -Replaces: nautilussvn -Description: Easy version control - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. There are - extensions for Nautilus, Thunar and GEdit, and a simple command-line interface. - . - RabbitVCS currently only supports Subversion. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/copyright rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/copyright --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - -Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg -Copyright: TortoiseSVN -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/lib/decorators.py -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2005-2009, Bastian Kleineidam - 2009, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/debug/ipython_view.py -Copyright: 2007, IBM Corporation -License: BSD - On Debian systems the full text of the BSD License can be found in - the '/usr/share/common-licenses/BSD' file. - -Files: rabbitvcs/ui/wraplabel.py -Copyright: 2005, VMware Inc. -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/patches/99_setup.py.patch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.13/setup.py rabbitvcs-0.13.new/setup.py ---- rabbitvcs-0.13/setup.py 2010-01-30 22:39:56.000000000 +0800 -+++ rabbitvcs-0.13.new/setup.py 2010-01-30 22:50:29.000000000 +0800 -@@ -141,10 +141,11 @@ - # - - # Make sure the icon cache is deleted and recreated --if sys.argv[1] == "install": -- print "Running gtk-update-icon-cache" -- -- subprocess.Popen( -- ["gtk-update-icon-cache", icon_theme_directory], -- stdout=subprocess.PIPE -- ).communicate()[0] -+# Debian: this is not needed since hicolor-icon-cache (0.10-2) -+# if sys.argv[1] == "install": -+# print "Running gtk-update-icon-cache" -+# -+# subprocess.Popen( -+# ["gtk-update-icon-cache", icon_theme_directory], -+# stdout=subprocess.PIPE -+# ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/pycompat rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/pycompat --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/pyversions rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/pyversions --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/rules rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/rules --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#!/usr/bin/make -f - -DEB_PYTHON_SYSTEM=pysupport - -include /usr/share/cdbs/1/rules/simple-patchsys.mk -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/python-distutils.mk diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-karmic/watch rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/watch --- rabbitvcs-0.13.1/packages/core/ubuntu-karmic/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-karmic/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-core-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/changelog rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/changelog --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-core (0.13-1~lucid) lucid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 20:37:52 +0800 - -rabbitvcs-core (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:27:21 +0800 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/compat rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/compat --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/control rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/control --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -Source: rabbitvcs-core -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 6.0.4), - cdbs (>= 0.4.51), - python (>= 2.5.2) -Build-Depends-Indep: python-support (>= 0.5.3), - python-central (>= 0.6.5), - pkg-config (>= 0.20), - patchutils (>= 0.2.31) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-core -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - python-gtk2 (>= 2.12.1), - python-glade2 (>= 2.12.1), - python-gobject (>= 2.14.1), - python-svn (>= 1.5.2), - python-configobj (>= 4.4.0), - python-dbus (>= 0.82.4), - subversion (>= 1.4.6), - meld (>=1.1.2), - ipython (>=0.7.1), - hicolor-icon-theme (>= 0.10-2) -Conflicts: nautilussvn, rabbitvcs -Replaces: nautilussvn -Description: Easy version control - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. There are - extensions for Nautilus, Thunar and GEdit, and a simple command-line interface. - . - RabbitVCS currently only supports Subversion. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/copyright rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/copyright --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - -Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg -Copyright: TortoiseSVN -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/lib/decorators.py -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2005-2009, Bastian Kleineidam - 2009, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: rabbitvcs/debug/ipython_view.py -Copyright: 2007, IBM Corporation -License: BSD - On Debian systems the full text of the BSD License can be found in - the '/usr/share/common-licenses/BSD' file. - -Files: rabbitvcs/ui/wraplabel.py -Copyright: 2005, VMware Inc. -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/patches/99_setup.py.patch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.13/setup.py rabbitvcs-0.13.new/setup.py ---- rabbitvcs-0.13/setup.py 2010-01-30 22:39:56.000000000 +0800 -+++ rabbitvcs-0.13.new/setup.py 2010-01-30 22:50:29.000000000 +0800 -@@ -141,10 +141,11 @@ - # - - # Make sure the icon cache is deleted and recreated --if sys.argv[1] == "install": -- print "Running gtk-update-icon-cache" -- -- subprocess.Popen( -- ["gtk-update-icon-cache", icon_theme_directory], -- stdout=subprocess.PIPE -- ).communicate()[0] -+# Debian: this is not needed since hicolor-icon-cache (0.10-2) -+# if sys.argv[1] == "install": -+# print "Running gtk-update-icon-cache" -+# -+# subprocess.Popen( -+# ["gtk-update-icon-cache", icon_theme_directory], -+# stdout=subprocess.PIPE -+# ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/pycompat rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/pycompat --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/pycompat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/pycompat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2 diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/pyversions rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/pyversions --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/pyversions 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/pyversions 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2.5- diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/rules rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/rules --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#!/usr/bin/make -f - -DEB_PYTHON_SYSTEM=pysupport - -include /usr/share/cdbs/1/rules/simple-patchsys.mk -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/python-distutils.mk diff -Nru rabbitvcs-0.13.1/packages/core/ubuntu-lucid/watch rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/watch --- rabbitvcs-0.13.1/packages/core/ubuntu-lucid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/core/ubuntu-lucid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-core-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/debian/debian/changelog rabbitvcs-0.15.0.5/packages/debian/debian/changelog --- rabbitvcs-0.13.1/packages/debian/debian/changelog 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/changelog 2011-11-06 12:56:57.000000000 +0000 @@ -0,0 +1,39 @@ +rabbitvcs (0.15.0.1-1) unstable; urgency=low + + * New upstream release + * New client for Nautilus 3 + + -- Jason Heeris Sun, 06 Nov 2011 20:55:53 +0800 + +rabbitvcs (0.14.2.1-1) unstable; urgency=low + + * New upstream release. Package description now includes Git. + + -- Jason Heeris Sun, 08 May 2011 09:41:40 +0800 + +rabbitvcs (0.13.3-1) UNRELEASED; urgency=low + + [ Jason Heeris ] + * New upstream release + * Package description now states Subversion only. Closes: #580716. + + [ Sameer Rahmani ] + * watch file fixed. + + -- Jason Heeris Fri, 18 Jun 2010 18:52:59 +0800 + +rabbitvcs (0.13.1-2) unstable; urgency=low + + * Team upload + * debian/control + - added python-gnome2 to Depends of rabbitvcs-nautilus; Closes: #610473 + + -- Debian Python Modules Team Thu, 20 Jan 2011 00:50:44 +0100 + +rabbitvcs (0.13.1-1) unstable; urgency=low + + * Replaced multiple tarballs with single tarball plus split-out binary + packages. + * Again closes: #469181. + + -- Jason Heeris Fri, 02 Apr 2010 17:03:15 +0800 diff -Nru rabbitvcs-0.13.1/packages/debian/debian/clean rabbitvcs-0.15.0.5/packages/debian/debian/clean --- rabbitvcs-0.13.1/packages/debian/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/clean 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +rabbitvcs/buildinfo.py + diff -Nru rabbitvcs-0.13.1/packages/debian/debian/compat rabbitvcs-0.15.0.5/packages/debian/debian/compat --- rabbitvcs-0.13.1/packages/debian/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/compat 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +7 diff -Nru rabbitvcs-0.13.1/packages/debian/debian/control rabbitvcs-0.15.0.5/packages/debian/debian/control --- rabbitvcs-0.13.1/packages/debian/debian/control 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/control 2011-11-06 12:56:57.000000000 +0000 @@ -0,0 +1,89 @@ +Source: rabbitvcs +Maintainer: Jason Heeris +Section: devel +Priority: optional +Build-Depends: debhelper (>= 7), + python (>= 2.5.2) +Build-Depends-Indep: python-support (>= 0.5.3), + pkg-config (>= 0.20) +Standards-Version: 3.9.2.0 +XS-Python-Version: >= 2.5 +Homepage: http://www.rabbitvcs.org + +Package: rabbitvcs-core +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + python-gtk2 (>= 2.12.1), + python-gobject (>= 2.14.1), + python-svn (>= 1.5.2), + python-dbus (>= 0.82.4), + python-configobj (>= 4.4.0), + subversion (>= 1.4.6), + meld (>=1.1.2), + ipython (>=0.7.1), + hicolor-icon-theme (>= 0.10-2), + python-dulwich +Conflicts: nautilussvn, rabbitvcs +Replaces: nautilussvn +Description: Easy version control + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + There are extensions for Nautilus, Thunar and GEdit, and a simple command-line + interface. + +Package: rabbitvcs-cli +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + rabbitvcs-core (>= 0.15) +Description: Command line interface for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the command-line interface. + +Package: rabbitvcs-gedit +Architecture: all +Depends: ${misc:Depends}, + gedit, + rabbitvcs-core (>= 0.15) +Description: Gedit extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for gedit text editor. + +Package: rabbitvcs-nautilus +Architecture: all +Depends: ${misc:Depends}, + nautilus (<< 3.0~), + python-nautilus (>= 0.5.0~), + python-nautilus (<< 1.0~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 2 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v2 only). + +Package: rabbitvcs-nautilus3 +Architecture: all +Depends: ${misc:Depends}, + nautilus (>= 3~), + python-nautilus (>= 1.0~), + python-gobject (>= 2.28.2~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 3 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v3.0 or greater). + +Package: rabbitvcs-thunar +Architecture: all +Depends: ${misc:Depends}, + thunar (>= 0.4.0), + thunarx-python (>= 0.2.0), + rabbitvcs-core (>= 0.15) +Description: Thunar extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Thunar file manager. + diff -Nru rabbitvcs-0.13.1/packages/debian/debian/copyright rabbitvcs-0.15.0.5/packages/debian/debian/copyright --- rabbitvcs-0.13.1/packages/debian/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/copyright 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,92 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 +Name: rabbitvcs +Contact: RabbitVCS Team +Source: http://code.google.com/p/rabbitvcs/ + +Files: * +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2010, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: debian/* +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2011, Jason Heeris +License: GPL-3+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-3' + file. + +Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg +Copyright: TortoiseSVN +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/util/decorators.py +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2005-2009, Bastian Kleineidam + 2009, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/debug/ipython_view.py +Copyright: 2007, IBM Corporation +License: + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of the IBM nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +Files: rabbitvcs/ui/wraplabel.py +Copyright: 2005, VMware Inc. +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/debian/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/debian/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/debian/debian/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/patches/99_setup.py.patch 2011-11-06 12:56:57.000000000 +0000 @@ -0,0 +1,24 @@ +Description: Remove GTK icon cache rebuilding. + This removes the rebuilding of the GTK icon cache after installing the core. + It is not needed in any distro with hicolor-icon-theme >= 0.10-2 +Forwarded: not-needed +Author: Jason Heeris + +diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.15/setup.py rabbitvcs-0.15.new/setup.py +--- rabbitvcs-0.15/setup.py 2011-11-06 11:32:48.053065966 +0800 ++++ rabbitvcs-0.15.new/setup.py 2011-11-06 11:33:02.232892091 +0800 +@@ -154,14 +154,3 @@ + # + # Post installation + # +- +-# Make sure the icon cache is deleted and recreated +-if sys.argv[1] == "install": +- +- if os.uname()[0] != 'Darwin': +- print "Running gtk-update-icon-cache" +- +- subprocess.Popen( +- ["gtk-update-icon-cache", icon_theme_directory], +- stdout=subprocess.PIPE +- ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/debian/debian/patches/series rabbitvcs-0.15.0.5/packages/debian/debian/patches/series --- rabbitvcs-0.13.1/packages/debian/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/patches/series 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +99_setup.py.patch diff -Nru rabbitvcs-0.13.1/packages/debian/debian/pycompat rabbitvcs-0.15.0.5/packages/debian/debian/pycompat --- rabbitvcs-0.13.1/packages/debian/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/pycompat 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +2 diff -Nru rabbitvcs-0.13.1/packages/debian/debian/pyversions rabbitvcs-0.15.0.5/packages/debian/debian/pyversions --- rabbitvcs-0.13.1/packages/debian/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/pyversions 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +2.5- diff -Nru rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs.1 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,36 @@ +.\"Created with GNOME Manpages Editor Wizard +.\"http://sourceforge.net/projects/gmanedit2 +.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" + +.SH NAME +rabbitvcs \- Integrated version control for Nautilus + +.SH SYNOPSIS +.B rabbitvcs + [path1] [path2] ... +.br + +.SH DESCRIPTION +.B rabbitvcs +provides integrated support for various version control version systems in +the Nautilus file manager (currently only subversion). This command opens +a new +.B nautilus +window and applies the given VCS command. + +.SH OPTIONS +.B +.IP module +The VCS command to invoke. Available modules are: about, add, blame, checkout, +cleanup, commit, create, delete, export, ignore, import, lock, log, merge, +properties, relocate, rename, resolve, revert, settings, switch, unlock, update, +updateto + +.B +.IP path +The file(s) or directory(\-ies) to apply the action to. + +.SH "SEE ALSO" +.B nautilus(1) +, +.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-cli.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +clients/cli/rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-cli.manpages 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-core.install rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-core.install --- rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-core.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-core.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/* . diff -Nru rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-gedit.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,2 @@ +clients/gedit/rabbitvcs-plugin.py usr/lib/gedit-2/plugins +clients/gedit/rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/debian/debian/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/rabbitvcs-nautilus.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/debian/debian/rules rabbitvcs-0.15.0.5/packages/debian/debian/rules --- rabbitvcs-0.13.1/packages/debian/debian/rules 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/rules 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,7 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +# export DH_VERBOSE=1 + +%: + dh $@ diff -Nru rabbitvcs-0.13.1/packages/debian/debian/source/format rabbitvcs-0.15.0.5/packages/debian/debian/source/format --- rabbitvcs-0.13.1/packages/debian/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/source/format 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/debian/debian/watch rabbitvcs-0.15.0.5/packages/debian/debian/watch --- rabbitvcs-0.13.1/packages/debian/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian/debian/watch 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,5 @@ +version=3 +opts=\ +downloadurlmangle=s|.*[?]name=(.*?)&.*|http://rabbitvcs.googlecode.com/files/$1|,\ +filenamemangle=s|[^/]+[?]name=(.*?)&.*|$1| \ +http://code.google.com/p/rabbitvcs/downloads/detail[?]name=rabbitvcs-([0-9.]+).tar.gz&.* diff -Nru rabbitvcs-0.13.1/packages/debian.py rabbitvcs-0.15.0.5/packages/debian.py --- rabbitvcs-0.13.1/packages/debian.py 2009-12-20 05:59:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/debian.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -from generic import Generic - -import shutil, subprocess, os.path, sys - -ERROR_USCAN = """ - - == Packaging script error! == - -Error: uscan failed to download the upstream archive. - -This will cause major problems if you try to upload anything to (eg.) a PPA or -the Debian archives, since the MD5 hash will not match. Therefore, it is a fatal -error. - -If you have not yet uploaded an official tarball, just do it and don't complain. -""" - -class Debian(Generic): - """ A builder for all Debian-like distributions. - """ - - # Distributions to which this class may be applied - distros = ["debian.*", "ubuntu.*"] - - control_dir = "debian" - - def __init__(self, *args, **kwargs): - Generic.__init__(self, *args, **kwargs) - - self.pbuilder = (kwargs.has_key('use_pbuilder') and - kwargs['use_pbuilder']) - - self.ppa = (kwargs.has_key('ppa') and - kwargs['ppa']) - - self.orig_ark = None - self.orig_ark_name = self.name + "_" + self.version + ".orig.tar.gz" - - def _debianise(self): - print "Debianising source... " - - control_dir = os.path.join(self.package_dir, - Generic.PACKAGE_FILES_SUBDIR, - self.distro, - Debian.control_dir) - - shutil.copytree(control_dir, - os.path.join(self.package_dir, - Debian.control_dir)) - - def _common_prebuild(self, get_archive=False): - self._copy_source() - - if get_archive: - print " +++ Running uscan to download upstream archive +++ " - distro_dir = os.path.join(self.package_dir, - Generic.PACKAGE_FILES_SUBDIR, - self.distro) - downloaded = subprocess.call(["uscan", - "--destdir", self.build_area, - "--download-current"], - cwd=distro_dir, - stdout=sys.stdout, - stderr=sys.stderr) == 0 - if downloaded: - self.orig_ark = os.path.join(self.build_area, - self.orig_ark_name) - assert os.path.exists(self.orig_ark) - else: - sys.exit(ERROR_USCAN) - - if not (self.orig_ark and os.path.exists(self.orig_ark)): - self.orig_ark = self._compress(self.orig_ark_name) - - self._debianise() - - def _build_source(self): - print "Running dpkg-source to create Debian source package..." - - retval = subprocess.call( - ["dpkg-source", "-b", self.package_dir, self.orig_ark], - cwd = self.build_area) - - def _build_binary_pdebuild(self, sign = False): - print "Running pdebuild to create a Debian binary package..." - - args = ["pdebuild", "--buildresult", self.build_area] - - if sign: - args.append("--auto-debsign") - - retval = subprocess.call( - args, - cwd = self.package_dir) - - def _build_binary_debuild(self, sign = False): - print "Running debuild to create an unsigned Debian binary package..." - - retval = subprocess.call( - ["debuild", "-us", "-uc", "-b"], - cwd = self.package_dir) - - def _build_ppa_source(self): - print "Running debuild to create a signed Debian source package..." - - retval = subprocess.call( - ["debuild", "-S"], - cwd = self.package_dir) - - def _build_binary(self, sign = False): - if self.pbuilder: - self._build_binary_pdebuild(sign) - else: - self._build_binary_debuild(sign) - - def build_official_package(self): - self._common_prebuild(get_archive=True) - # self._build_source() - self._build_binary_pdebuild(sign=True) - self._copy_results() - - def build_current_source(self): - """ Builds a Debian (like) source package from the current state of the - tree. - """ - self._common_prebuild() - self._build_source() - self._copy_results() - - def build_current_binary(self): - """ Builds a Debian (like) binary package from the current state of the - tree. - """ - self._common_prebuild() - self._build_binary() - self._copy_results("*.deb") - - def build_ppa_source(self): - """ Builds a source package for the PPA. - """ - self._common_prebuild(get_archive=True) - self._build_ppa_source() - self._copy_results() diff -Nru rabbitvcs-0.13.1/packages/gedit/debian/changelog rabbitvcs-0.15.0.5/packages/gedit/debian/changelog --- rabbitvcs-0.13.1/packages/gedit/debian/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/debian/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-gedit (0.13-1) unstable; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:45:20 +0800 - -rabbitvcs-gedit (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/gedit/debian/compat rabbitvcs-0.15.0.5/packages/gedit/debian/compat --- rabbitvcs-0.13.1/packages/gedit/debian/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/gedit/debian/control rabbitvcs-0.15.0.5/packages/gedit/debian/control --- rabbitvcs-0.13.1/packages/gedit/debian/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/debian/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Source: rabbitvcs-gedit -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-gedit -Architecture: all -Depends: ${misc:Depends}, - gedit, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Gedit extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for gedit text editor. diff -Nru rabbitvcs-0.13.1/packages/gedit/debian/copyright rabbitvcs-0.15.0.5/packages/gedit/debian/copyright --- rabbitvcs-0.13.1/packages/gedit/debian/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/debian/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/gedit/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/gedit/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/gedit/debian/rabbitvcs-gedit.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/debian/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -rabbitvcs-plugin.py usr/lib/gedit-2/plugins -rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/gedit/debian/rules rabbitvcs-0.15.0.5/packages/gedit/debian/rules --- rabbitvcs-0.13.1/packages/gedit/debian/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/debian/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/gedit/debian/watch rabbitvcs-0.15.0.5/packages/gedit/debian/watch --- rabbitvcs-0.13.1/packages/gedit/debian/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/debian/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-gedit-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/changelog rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/changelog --- rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-gedit (0.13-1~hardy) hardy; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:45:20 +0800 - -rabbitvcs-gedit (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/compat rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/compat --- rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/control rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/control --- rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Source: rabbitvcs-gedit -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-gedit -Architecture: all -Depends: ${misc:Depends}, - gedit, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Gedit extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for gedit text editor. diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/copyright rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/copyright --- rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/rabbitvcs-gedit.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -rabbitvcs-plugin.py usr/lib/gedit-2/plugins -rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/rules rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/rules --- rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/watch rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/watch --- rabbitvcs-0.13.1/packages/gedit/ubuntu-hardy/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-hardy/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-gedit-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/changelog rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/changelog --- rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-gedit (0.13-1~intrepid) intrepid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:45:20 +0800 - -rabbitvcs-gedit (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/compat rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/compat --- rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/control rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/control --- rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Source: rabbitvcs-gedit -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-gedit -Architecture: all -Depends: ${misc:Depends}, - gedit, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Gedit extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for gedit text editor. diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/copyright rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/copyright --- rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/rabbitvcs-gedit.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -rabbitvcs-plugin.py usr/lib/gedit-2/plugins -rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/rules rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/rules --- rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/watch rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/watch --- rabbitvcs-0.13.1/packages/gedit/ubuntu-intrepid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-intrepid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-gedit-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/changelog rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/changelog --- rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-gedit (0.13-1~jaunty) jaunty; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:45:20 +0800 - -rabbitvcs-gedit (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/compat rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/compat --- rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/control rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/control --- rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Source: rabbitvcs-gedit -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-gedit -Architecture: all -Depends: ${misc:Depends}, - gedit, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Gedit extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for gedit text editor. diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/copyright rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/copyright --- rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/rabbitvcs-gedit.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -rabbitvcs-plugin.py usr/lib/gedit-2/plugins -rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/rules rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/rules --- rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/watch rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/watch --- rabbitvcs-0.13.1/packages/gedit/ubuntu-jaunty/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-jaunty/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-gedit-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/changelog rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/changelog --- rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-gedit (0.13-1~karmic) karmic; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:45:20 +0800 - -rabbitvcs-gedit (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/compat rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/compat --- rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/control rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/control --- rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Source: rabbitvcs-gedit -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-gedit -Architecture: all -Depends: ${misc:Depends}, - gedit, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Gedit extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for gedit text editor. diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/copyright rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/copyright --- rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/rabbitvcs-gedit.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -rabbitvcs-plugin.py usr/lib/gedit-2/plugins -rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/rules rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/rules --- rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/watch rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/watch --- rabbitvcs-0.13.1/packages/gedit/ubuntu-karmic/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-karmic/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-gedit-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/changelog rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/changelog --- rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-gedit (0.13-1~lucid) lucid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:45:20 +0800 - -rabbitvcs-gedit (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/compat rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/compat --- rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/control rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/control --- rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Source: rabbitvcs-gedit -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-gedit -Architecture: all -Depends: ${misc:Depends}, - gedit, - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Gedit extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for gedit text editor. diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/copyright rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/copyright --- rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/rabbitvcs-gedit.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -rabbitvcs-plugin.py usr/lib/gedit-2/plugins -rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/rules rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/rules --- rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/watch rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/watch --- rabbitvcs-0.13.1/packages/gedit/ubuntu-lucid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/gedit/ubuntu-lucid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-gedit-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/generic.py rabbitvcs-0.15.0.5/packages/generic.py --- rabbitvcs-0.13.1/packages/generic.py 2009-11-22 11:07:50.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/generic.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -import os, os.path, shutil, subprocess, fnmatch -import pysvn - -class Generic(object): - - PACKAGE_FILES_SUBDIR = "packages" - - distros = ["generic"] - - def __init__(self, working_copy, build_area, output_dir, distro, name, version, **kawrgs): - self.working_copy = working_copy - self.build_area = build_area - self.output_dir = output_dir - self.distro = distro - self.name = name - self.version = version - self.package_dir_rel = self.name + "-" + self.version - self.package_dir = os.path.join(build_area, self.package_dir_rel) - - def _copy_source(self): - try: - svn_client = pysvn.Client() - svn_client.export(self.working_copy, self.package_dir) - print "Exported SVN working copy." - except pysvn.ClientError: - shutil.copytree(self.working_copy, self.package_dir) - print "Copied file tree." - - def _compress(self, ark_name = None): - if not ark_name: - ark_name = self.name + "-" + self.version + ".tar.gz" - - ark_path = os.path.join(self.build_area, ark_name) - - print "Creating orig archive... ", - - retval = subprocess.call( - ["tar", "-czf", ark_path, self.package_dir_rel], - cwd = self.build_area) - - # This doesn't work: uses absolute paths unless we chdir - # ark = tarfile.open( - # os.path.join(self.build_area, ark_name), - # mode = "w:gz") - # ark.add(self.package_dir) - # ark.close() - - if retval == 0: - print "Done." - else: - print "Failed!" - raise RuntimeError("Failed to create orig archive!") - - assert os.path.isfile(ark_path) - - print "Archive created: %s" % ark_path - - return ark_path - - def _copy_results(self, match = "*"): - # List all non-directory files - files = fnmatch.filter(os.walk(self.build_area).next()[2], match) - - [shutil.copy( - os.path.join(self.build_area, fl), - # fl, - self.output_dir) \ - for fl in files] - - def build_current_source(self): - self._copy_source() - self._compress() - self._copy_results("*.tar.gz") diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/changelog rabbitvcs-0.15.0.5/packages/karmic/debian/changelog --- rabbitvcs-0.13.1/packages/karmic/debian/changelog 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/changelog 2011-11-06 03:44:09.000000000 +0000 @@ -0,0 +1,55 @@ +rabbitvcs (0.15.0.1-1~karmic) karmic; urgency=low + + * New upstream release + * Builds new package "rabbitvcs-nautilus3" for Nautilus 3 + + -- Jason Heeris Sun, 06 Nov 2011 11:08:18 +0800 + +rabbitvcs (0.14.2.1-1~karmic) karmic; urgency=low + + * New upstream release + + -- Jason Heeris Sat, 19 Feb 2011 01:19:48 +0800 + +rabbitvcs (0.14.1.1-1~karmic) karmic; urgency=low + + * New upstream release. + + -- Jason Heeris Sun, 09 Jan 2011 17:33:38 +0800 + +rabbitvcs (0.14~beta4-1~karmic) karmic; urgency=low + + * New upstream beta release. + + -- Jason Heeris Wed, 15 Dec 2010 23:39:43 +0800 + +rabbitvcs (0.13.3-1~karmic) karmic; urgency=low + + * New upstream release. + + -- Jason Heeris Wed, 16 Jun 2010 21:31:35 +0800 + +rabbitvcs (0.13.2.1-1~karmic) karmic; urgency=low + + * Point-point bugfix release. + + -- Jason Heeris Sat, 05 Jun 2010 15:37:09 +0800 + +rabbitvcs (0.13.2+a-1~karmic) karmic; urgency=low + + * Sigh. + + -- Jason Heeris Mon, 31 May 2010 23:20:43 +0800 + +rabbitvcs (0.13.2-1~karmic) karmic; urgency=low + + * New upstream release. + + -- Jason Heeris Sun, 30 May 2010 23:51:27 +0800 + +rabbitvcs (0.13.1-1~karmic) karmic; urgency=low + + * Replaced multiple tarballs with single tarball plus split-out binary + packages. + + -- Jason Heeris Fri, 02 Apr 2010 17:03:15 +0800 diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/clean rabbitvcs-0.15.0.5/packages/karmic/debian/clean --- rabbitvcs-0.13.1/packages/karmic/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/clean 2011-11-06 03:44:09.000000000 +0000 @@ -0,0 +1,2 @@ +rabbitvcs/buildinfo.py + diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/compat rabbitvcs-0.15.0.5/packages/karmic/debian/compat --- rabbitvcs-0.13.1/packages/karmic/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/compat 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +7 diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/control rabbitvcs-0.15.0.5/packages/karmic/debian/control --- rabbitvcs-0.13.1/packages/karmic/debian/control 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/control 2011-11-06 03:44:09.000000000 +0000 @@ -0,0 +1,89 @@ +Source: rabbitvcs +Maintainer: Jason Heeris +Section: devel +Priority: optional +Build-Depends: debhelper (>= 7), + python (>= 2.5.2) +Build-Depends-Indep: python-support (>= 0.5.3), + pkg-config (>= 0.20) +Standards-Version: 3.9.2.0 +XS-Python-Version: >= 2.5 +Homepage: http://www.rabbitvcs.org + +Package: rabbitvcs-core +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + python-gtk2 (>= 2.12.1), + python-gobject (>= 2.14.1), + python-svn (>= 1.5.2), + python-dbus (>= 0.82.4), + python-configobj (>= 4.4.0), + subversion (>= 1.4.6), + meld (>=1.1.2), + ipython (>=0.7.1), + hicolor-icon-theme (>= 0.10-2), + python-dulwich +Conflicts: nautilussvn, rabbitvcs +Replaces: nautilussvn +Description: Easy version control + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + There are extensions for Nautilus, Thunar and GEdit, and a simple command-line + interface. + +Package: rabbitvcs-cli +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + rabbitvcs-core (>= 0.15) +Description: Command line interface for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the command-line interface. + +Package: rabbitvcs-gedit +Architecture: all +Depends: ${misc:Depends}, + gedit, + rabbitvcs-core (>= 0.15) +Description: Gedit extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for gedit text editor. + +Package: rabbitvcs-nautilus +Architecture: all +Depends: ${misc:Depends}, + nautilus (<< 3.0~), + python-nautilus (>= 0.5.0~), + python-nautilus (<< 1.0~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 2 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v2 only). + +Package: rabbitvcs-nautilus3 +Architecture: all +Depends: ${misc:Depends}, + nautilus (>= 3~), + python-nautilus (>= 1.0~), + python-gobject (>= 2.28.2~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 3 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v3.0 or greater). + +Package: rabbitvcs-thunar +Architecture: all +Depends: ${misc:Depends}, + thunar (>= 0.4.0), + thunarx-python (>= 0.2.0), + rabbitvcs-core (>= 0.15) +Description: Thunar extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Thunar file manager. + diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/copyright rabbitvcs-0.15.0.5/packages/karmic/debian/copyright --- rabbitvcs-0.13.1/packages/karmic/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/copyright 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,69 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 +Name: rabbitvcs +Contact: RabbitVCS Team +Source: http://code.google.com/p/rabbitvcs/ + +Files: * +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2010, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: debian/* +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2010, Jason Heeris +License: GPL-3+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-3' + file. + +Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg +Copyright: TortoiseSVN +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/util/decorators.py +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2005-2009, Bastian Kleineidam + 2009, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/debug/ipython_view.py +Copyright: 2007, IBM Corporation +License: BSD + On Debian systems the full text of the BSD License can be found in + the '/usr/share/common-licenses/BSD' file. + +Files: rabbitvcs/ui/wraplabel.py +Copyright: 2005, VMware Inc. +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/karmic/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/karmic/debian/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/patches/99_setup.py.patch 2011-11-06 03:44:09.000000000 +0000 @@ -0,0 +1,24 @@ +Description: Remove GTK icon cache rebuilding. + This removes the rebuilding of the GTK icon cache after installing the core. + It is not needed in any distro with hicolor-icon-theme >= 0.10-2 +Forwarded: not-needed +Author: Jason Heeris + +diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.15/setup.py rabbitvcs-0.15.new/setup.py +--- rabbitvcs-0.15/setup.py 2011-11-06 11:32:48.053065966 +0800 ++++ rabbitvcs-0.15.new/setup.py 2011-11-06 11:33:02.232892091 +0800 +@@ -154,14 +154,3 @@ + # + # Post installation + # +- +-# Make sure the icon cache is deleted and recreated +-if sys.argv[1] == "install": +- +- if os.uname()[0] != 'Darwin': +- print "Running gtk-update-icon-cache" +- +- subprocess.Popen( +- ["gtk-update-icon-cache", icon_theme_directory], +- stdout=subprocess.PIPE +- ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/patches/series rabbitvcs-0.15.0.5/packages/karmic/debian/patches/series --- rabbitvcs-0.13.1/packages/karmic/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/patches/series 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,2 @@ +99_setup.py.patch + diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/pycompat rabbitvcs-0.15.0.5/packages/karmic/debian/pycompat --- rabbitvcs-0.13.1/packages/karmic/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/pycompat 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +2 diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/pyversions rabbitvcs-0.15.0.5/packages/karmic/debian/pyversions --- rabbitvcs-0.13.1/packages/karmic/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/pyversions 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +2.5- diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs.1 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,36 @@ +.\"Created with GNOME Manpages Editor Wizard +.\"http://sourceforge.net/projects/gmanedit2 +.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" + +.SH NAME +rabbitvcs \- Integrated version control for Nautilus + +.SH SYNOPSIS +.B rabbitvcs + [path1] [path2] ... +.br + +.SH DESCRIPTION +.B rabbitvcs +provides integrated support for various version control version systems in +the Nautilus file manager (currently only subversion). This command opens +a new +.B nautilus +window and applies the given VCS command. + +.SH OPTIONS +.B +.IP module +The VCS command to invoke. Available modules are: about, add, blame, checkout, +cleanup, commit, create, delete, export, ignore, import, lock, log, merge, +properties, relocate, rename, resolve, revert, settings, switch, unlock, update, +updateto + +.B +.IP path +The file(s) or directory(\-ies) to apply the action to. + +.SH "SEE ALSO" +.B nautilus(1) +, +.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-cli.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +clients/cli/rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-cli.manpages 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-core.install rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-core.install --- rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-core.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-core.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/* . diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-gedit.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,2 @@ +clients/gedit/rabbitvcs-plugin.py usr/lib/gedit-2/plugins +clients/gedit/rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-nautilus3.install rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-nautilus3.install --- rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-nautilus3.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-nautilus3.install 2011-11-06 12:12:52.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/share/nautilus-python/extensions diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-nautilus.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/karmic/debian/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rabbitvcs-thunar.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,2 @@ +clients/thunar/RabbitVCS.py usr/lib/thunarx-2/python +clients/thunar/RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/rules rabbitvcs-0.15.0.5/packages/karmic/debian/rules --- rabbitvcs-0.13.1/packages/karmic/debian/rules 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/rules 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,7 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +# export DH_VERBOSE=1 + +%: + dh $@ diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/source/format rabbitvcs-0.15.0.5/packages/karmic/debian/source/format --- rabbitvcs-0.13.1/packages/karmic/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/source/format 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/karmic/debian/watch rabbitvcs-0.15.0.5/packages/karmic/debian/watch --- rabbitvcs-0.13.1/packages/karmic/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/karmic/debian/watch 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,5 @@ +version=3 +opts=\ +downloadurlmangle=s|.*[?]name=(.*?)&.*|http://rabbitvcs.googlecode.com/files/$1|,\ +filenamemangle=s|[^/]+[?]name=(.*?)&.*|$1| \ +http://code.google.com/p/rabbitvcs/downloads/detail[?]name=rabbitvcs-([0-9.]+).tar.gz&.* diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/changelog rabbitvcs-0.15.0.5/packages/lucid/debian/changelog --- rabbitvcs-0.13.1/packages/lucid/debian/changelog 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/changelog 2011-11-06 09:03:42.000000000 +0000 @@ -0,0 +1,55 @@ +rabbitvcs (0.15.0.1-1~lucid) lucid; urgency=low + + * New upstream release + * Includes new Nautilus 3 client + + -- Jason Heeris Sun, 06 Nov 2011 15:57:06 +0800 + +rabbitvcs (0.14.2.1-1~lucid) lucid; urgency=low + + * New upstream release + + -- Jason Heeris Sat, 19 Feb 2011 01:34:28 +0800 + +rabbitvcs (0.14.1.1-1~lucid) lucid; urgency=low + + * New upstream release. + + -- Jason Heeris Sun, 09 Jan 2011 17:36:12 +0800 + +rabbitvcs (0.14~beta4-1~lucid) lucid; urgency=low + + * New upstream beta release. + + -- Jason Heeris Wed, 15 Dec 2010 23:40:46 +0800 + +rabbitvcs (0.13.3-1~lucid) lucid; urgency=low + + * New upstream release. + + -- Jason Heeris Wed, 16 Jun 2010 21:27:01 +0800 + +rabbitvcs (0.13.2.1-1~lucid) lucid; urgency=low + + * Point-point bugfix release. + + -- Jason Heeris Sat, 05 Jun 2010 15:38:12 +0800 + +rabbitvcs (0.13.2+a-1~lucid) lucid; urgency=low + + * Sigh. + + -- Jason Heeris Mon, 31 May 2010 23:17:05 +0800 + +rabbitvcs (0.13.2-1~lucid) lucid; urgency=low + + * New upstream release. + + -- Jason Heeris Sun, 30 May 2010 23:59:33 +0800 + +rabbitvcs (0.13.1-1~lucid) lucid; urgency=low + + * Replaced multiple tarballs with single tarball plus split-out binary + packages. + + -- Jason Heeris Fri, 02 Apr 2010 17:03:15 +0800 diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/clean rabbitvcs-0.15.0.5/packages/lucid/debian/clean --- rabbitvcs-0.13.1/packages/lucid/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/clean 2011-11-06 09:03:42.000000000 +0000 @@ -0,0 +1,2 @@ +rabbitvcs/buildinfo.py + diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/compat rabbitvcs-0.15.0.5/packages/lucid/debian/compat --- rabbitvcs-0.13.1/packages/lucid/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/compat 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +7 diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/control rabbitvcs-0.15.0.5/packages/lucid/debian/control --- rabbitvcs-0.13.1/packages/lucid/debian/control 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/control 2011-11-06 09:03:42.000000000 +0000 @@ -0,0 +1,89 @@ +Source: rabbitvcs +Maintainer: Jason Heeris +Section: devel +Priority: optional +Build-Depends: debhelper (>= 7), + python (>= 2.5.2) +Build-Depends-Indep: python-support (>= 0.5.3), + pkg-config (>= 0.20) +Standards-Version: 3.9.2.0 +XS-Python-Version: >= 2.5 +Homepage: http://www.rabbitvcs.org + +Package: rabbitvcs-core +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + python-gtk2 (>= 2.12.1), + python-gobject (>= 2.14.1), + python-svn (>= 1.5.2), + python-dbus (>= 0.82.4), + python-configobj (>= 4.4.0), + subversion (>= 1.4.6), + meld (>=1.1.2), + ipython (>=0.7.1), + hicolor-icon-theme (>= 0.10-2), + python-dulwich +Conflicts: nautilussvn, rabbitvcs +Replaces: nautilussvn +Description: Easy version control + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + There are extensions for Nautilus, Thunar and GEdit, and a simple command-line + interface. + +Package: rabbitvcs-cli +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + rabbitvcs-core (>= 0.15) +Description: Command line interface for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the command-line interface. + +Package: rabbitvcs-gedit +Architecture: all +Depends: ${misc:Depends}, + gedit, + rabbitvcs-core (>= 0.15) +Description: Gedit extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for gedit text editor. + +Package: rabbitvcs-nautilus +Architecture: all +Depends: ${misc:Depends}, + nautilus (<< 3.0~), + python-nautilus (>= 0.5.0~), + python-nautilus (<< 1.0~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 2 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v2 only). + +Package: rabbitvcs-nautilus3 +Architecture: all +Depends: ${misc:Depends}, + nautilus (>= 3~), + python-nautilus (>= 1.0~), + python-gobject (>= 2.28.2~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 3 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v3.0 or greater). + +Package: rabbitvcs-thunar +Architecture: all +Depends: ${misc:Depends}, + thunar (>= 0.4.0), + thunarx-python (>= 0.2.0), + rabbitvcs-core (>= 0.15) +Description: Thunar extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Thunar file manager. + diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/copyright rabbitvcs-0.15.0.5/packages/lucid/debian/copyright --- rabbitvcs-0.13.1/packages/lucid/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/copyright 2011-11-06 09:03:42.000000000 +0000 @@ -0,0 +1,92 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 +Name: rabbitvcs +Contact: RabbitVCS Team +Source: http://code.google.com/p/rabbitvcs/ + +Files: * +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2010, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: debian/* +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2011, Jason Heeris +License: GPL-3+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-3' + file. + +Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg +Copyright: TortoiseSVN +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/util/decorators.py +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2005-2009, Bastian Kleineidam + 2009, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/debug/ipython_view.py +Copyright: 2007, IBM Corporation +License: + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of the IBM nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +Files: rabbitvcs/ui/wraplabel.py +Copyright: 2005, VMware Inc. +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/lucid/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/lucid/debian/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/patches/99_setup.py.patch 2011-11-06 09:03:42.000000000 +0000 @@ -0,0 +1,24 @@ +Description: Remove GTK icon cache rebuilding. + This removes the rebuilding of the GTK icon cache after installing the core. + It is not needed in any distro with hicolor-icon-theme >= 0.10-2 +Forwarded: not-needed +Author: Jason Heeris + +diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.15/setup.py rabbitvcs-0.15.new/setup.py +--- rabbitvcs-0.15/setup.py 2011-11-06 11:32:48.053065966 +0800 ++++ rabbitvcs-0.15.new/setup.py 2011-11-06 11:33:02.232892091 +0800 +@@ -154,14 +154,3 @@ + # + # Post installation + # +- +-# Make sure the icon cache is deleted and recreated +-if sys.argv[1] == "install": +- +- if os.uname()[0] != 'Darwin': +- print "Running gtk-update-icon-cache" +- +- subprocess.Popen( +- ["gtk-update-icon-cache", icon_theme_directory], +- stdout=subprocess.PIPE +- ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/patches/series rabbitvcs-0.15.0.5/packages/lucid/debian/patches/series --- rabbitvcs-0.13.1/packages/lucid/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/patches/series 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +99_setup.py.patch diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/pycompat rabbitvcs-0.15.0.5/packages/lucid/debian/pycompat --- rabbitvcs-0.13.1/packages/lucid/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/pycompat 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +2 diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/pyversions rabbitvcs-0.15.0.5/packages/lucid/debian/pyversions --- rabbitvcs-0.13.1/packages/lucid/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/pyversions 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +2.5- diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs.1 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,36 @@ +.\"Created with GNOME Manpages Editor Wizard +.\"http://sourceforge.net/projects/gmanedit2 +.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" + +.SH NAME +rabbitvcs \- Integrated version control for Nautilus + +.SH SYNOPSIS +.B rabbitvcs + [path1] [path2] ... +.br + +.SH DESCRIPTION +.B rabbitvcs +provides integrated support for various version control version systems in +the Nautilus file manager (currently only subversion). This command opens +a new +.B nautilus +window and applies the given VCS command. + +.SH OPTIONS +.B +.IP module +The VCS command to invoke. Available modules are: about, add, blame, checkout, +cleanup, commit, create, delete, export, ignore, import, lock, log, merge, +properties, relocate, rename, resolve, revert, settings, switch, unlock, update, +updateto + +.B +.IP path +The file(s) or directory(\-ies) to apply the action to. + +.SH "SEE ALSO" +.B nautilus(1) +, +.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-cli.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +clients/cli/rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-cli.manpages 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-core.install rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-core.install --- rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-core.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-core.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/* . diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-gedit.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,2 @@ +clients/gedit/rabbitvcs-plugin.py usr/lib/gedit-2/plugins +clients/gedit/rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-nautilus3.install rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-nautilus3.install --- rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-nautilus3.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-nautilus3.install 2011-11-06 12:12:52.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/share/nautilus-python/extensions diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-nautilus.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/lucid/debian/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rabbitvcs-thunar.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,2 @@ +clients/thunar/RabbitVCS.py usr/lib/thunarx-2/python +clients/thunar/RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/rules rabbitvcs-0.15.0.5/packages/lucid/debian/rules --- rabbitvcs-0.13.1/packages/lucid/debian/rules 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/rules 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,7 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +# export DH_VERBOSE=1 + +%: + dh $@ diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/source/format rabbitvcs-0.15.0.5/packages/lucid/debian/source/format --- rabbitvcs-0.13.1/packages/lucid/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/source/format 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/lucid/debian/watch rabbitvcs-0.15.0.5/packages/lucid/debian/watch --- rabbitvcs-0.13.1/packages/lucid/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/lucid/debian/watch 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,5 @@ +version=3 +opts=\ +downloadurlmangle=s|.*[?]name=(.*?)&.*|http://rabbitvcs.googlecode.com/files/$1|,\ +filenamemangle=s|[^/]+[?]name=(.*?)&.*|$1| \ +http://code.google.com/p/rabbitvcs/downloads/detail[?]name=rabbitvcs-([0-9.]+).tar.gz&.* diff -Nru rabbitvcs-0.13.1/packages/make rabbitvcs-0.15.0.5/packages/make --- rabbitvcs-0.13.1/packages/make 2009-12-01 16:14:50.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/make 1970-01-01 00:00:00.000000000 +0000 @@ -1,240 +0,0 @@ -#!/usr/bin/python - -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2009 by Jason Heeris -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . - -""" -This is a script to build RabbitVCS packages for various distros. It is very -shell-scripty, but it does the job. - -It is meant to be used from either the RabbitVCS source root or packages dir -(although it does a decent job of finding out where those places are anyway). It -should be invoked like: - -make [options] - -You can use "make --help" to show a usage message which lists the available -commands. -""" - -from optparse import OptionParser -import os, os.path, sys, shutil, re -import tempfile, subprocess -import imp - -from debian import Debian -from generic import Generic - -import pysvn - -MODULE_NAME = "rabbitvcs" - -CHANGELOG_ENTRY = "Local build via packaging script." - -COMMANDS = { - "binary" : - {"desc" : "Build a binary package from the current state of the source tree.", - "method" : "build_current_binary"}, - "source" : - {"desc" : "Build a source package from the current state of the source tree.", - "method" : "build_current_source"}, - - "official" : - {"desc" : "Build an official source and binary from a tarball and current packaging.", - "method" : "build_official_package"}, - - "ppa" : - {"desc" : "Build a source package for uploading to the PPA.", - "method": "build_ppa_source"} - } - # modify sys.path, do import - -def package_id(root_dir): - """ - Uses the python stdlib "imp" library to find and load the local rabbitvcs - module. We need to do it this way because (a) the version we are packaging - may be different from the version we are running and (b) there may not - actually be a version available to import. - - @param root_dir: the root directory of the local copy of RabbitVCS - @type root_dir: string - - @return: the tuple (package_name, package_version, module_path) - """ - (module_file, module_path, desc) = imp.find_module(MODULE_NAME, [root_dir]) - rabbitvcs = imp.load_module(MODULE_NAME, module_file, module_path, desc) - package_name = rabbitvcs.package_name() - package_version = rabbitvcs.package_version() - return (package_name, package_version, module_path) - - -def get_distros(basepath = None): - """ - List the directories we can see from here. These directories represent the - different distros we can build packages for. They will then be used to look - up the classes that can build the packages. - - @param basepath: the directory in which to look for the packaging dirs - if - nothing is given, look in the directory of this script (not - the current dir) - @type basepath: string - - @return: a list of non-hidden directories - """ - if not basepath: - basepath = os.path.dirname(__file__) - - dirs = os.walk(basepath).next()[1] - - # Remove hidden dirs - dirs = [dr for dr in dirs if not dr.startswith(".")] - - return dirs - -def usage(): - """ - Convenience method to return a formatted program usage string. - """ - ustr = "usage: %prog distro command [options]\n\n" - - ustr += "Detected distros are: " + ", ".join(get_distros()) - - ustr += "\n\n" - - ustr += "Available commands are:\n" - - for cmd, info in COMMANDS.items(): - ustr += cmd + ": " + info["desc"] + "\n" - - return ustr - -# These are the classes that build the distro-specific packages. See their -# documentation for more details. -CLASSES = [Debian, Generic] - - -if __name__ == "__main__": - - parser = OptionParser(usage = usage()) - - parser.add_option("-o", "--output-dir", dest="output_dir", - help = "directory for package files") - - parser.add_option("-p", "--pbuilder", dest="pbuilder", action="store_true", - default = False, - help = "use pbuilder for Debian/Ubuntu packages") - - parser.add_option("-a", "--ppa", dest="ppa", action="store_true", - default = False, - help = "prepare packages for PPA") - - (options, args) = parser.parse_args() - - output_dir = options.output_dir - - if len(args) < 2: - parser.error("You must specify a distro and a command!") - - distro = sys.argv[1] - command = sys.argv[2] - - root_dir = os.path.split(os.path.abspath(os.path.dirname(__file__)))[0] - - # If no output dir is given, use ".." - if not output_dir: - output_dir = os.path.split(root_dir)[0] - - temp_dir = None - - try: - - bld_class = None - - for cls in CLASSES: - for dst in cls.distros: - regex = re.compile(dst) - if regex.match(distro): - bld_class = cls - break - - if bld_class is None: - print "Could not find a builder for that distro!" - sys.exit(1) - - if os.path.lexists(output_dir) and not os.path.isdir(output_dir): - print "Output dir already exists, but is not a directory!" - sys.exit(1) - - # Create our destination dir - if not os.path.lexists(output_dir): - os.mkdir(output_dir) - - print "Output dir: %s" % output_dir - - print "Distro: %s" % distro - - if distro not in get_distros(): - print "Distro dir not found!" - - print "Command: %s" % command - - if command not in COMMANDS.keys(): - print "Command not valid!" - sys.exit(2) - - print "Original working dir: %s" % root_dir - - package_name = None - package_ver = None - - try: - package_name, package_ver, package_path = package_id(root_dir) - except ImportError: - print "Could not detect local RabbitVCS module!" - sys.exit(2) - - print "Detected RabbitVCS v%s in %s" % (package_ver, package_path) - - temp_dir = tempfile.mkdtemp(prefix=(package_name+"-")) - - print "Using temp dir: %s" % temp_dir - - print "Detected package name: %s, version: %s" % (package_name, package_ver) - - print "Using build class: %s" % bld_class - - builder = bld_class(root_dir, - temp_dir, - output_dir, - distro, - package_name, - package_ver, - use_pbuilder = options.pbuilder, - ppa = options.ppa) - - try: - getattr(builder, COMMANDS[command]["method"])() - except (NotImplementedError, AttributeError): - print "Distro \'%s\' does not support command \'%s\'!" % (distro, command) - sys.exit(1) - - sys.exit(0) - - finally: - if temp_dir: - shutil.rmtree(temp_dir) diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/changelog rabbitvcs-0.15.0.5/packages/maverick/debian/changelog --- rabbitvcs-0.13.1/packages/maverick/debian/changelog 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/changelog 2011-11-06 11:58:28.000000000 +0000 @@ -0,0 +1,42 @@ +rabbitvcs (0.15.0.1-1~maverick) maverick; urgency=low + + * New upstream release + * New client for Nautilus 3 + + -- Jason Heeris Sun, 06 Nov 2011 19:53:35 +0800 + +rabbitvcs (0.14.2.1-2~maverick) maverick; urgency=low + + * God I hate you Launchpad. + + -- Jason Heeris Wed, 15 Jun 2011 10:50:07 +0800 + +rabbitvcs (0.14.2.1-1~maverick) maverick; urgency=low + + * New upstream release + + -- Jason Heeris Sat, 19 Feb 2011 01:39:07 +0800 + +rabbitvcs (0.14.1.1-1~maverick) maverick; urgency=low + + * New upstream release. + + -- Jason Heeris Sun, 09 Jan 2011 17:38:04 +0800 + +rabbitvcs (0.14~beta4-1~maverick) maverick; urgency=low + + * New upstream beta release. + + -- Jason Heeris Wed, 15 Dec 2010 23:42:27 +0800 + +rabbitvcs (0.13.3-1~maverick) maverick; urgency=low + + * New point release. + + -- Jason Heeris Wed, 16 Jun 2010 21:26:14 +0800 + +rabbitvcs (0.13.2.1-1~maverick) maverick; urgency=low + + * First release for Maverick! + + -- Jason Heeris Sat, 05 Jun 2010 15:40:42 +0800 diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/clean rabbitvcs-0.15.0.5/packages/maverick/debian/clean --- rabbitvcs-0.13.1/packages/maverick/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/clean 2011-11-06 11:58:28.000000000 +0000 @@ -0,0 +1,2 @@ +rabbitvcs/buildinfo.py + diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/compat rabbitvcs-0.15.0.5/packages/maverick/debian/compat --- rabbitvcs-0.13.1/packages/maverick/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/compat 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +7 diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/control rabbitvcs-0.15.0.5/packages/maverick/debian/control --- rabbitvcs-0.13.1/packages/maverick/debian/control 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/control 2011-11-06 11:58:28.000000000 +0000 @@ -0,0 +1,89 @@ +Source: rabbitvcs +Maintainer: Jason Heeris +Section: devel +Priority: optional +Build-Depends: debhelper (>= 7), + python (>= 2.5.2) +Build-Depends-Indep: python-support (>= 0.5.3), + pkg-config (>= 0.20) +Standards-Version: 3.9.2.0 +XS-Python-Version: >= 2.5 +Homepage: http://www.rabbitvcs.org + +Package: rabbitvcs-core +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + python-gtk2 (>= 2.12.1), + python-gobject (>= 2.14.1), + python-svn (>= 1.5.2), + python-dbus (>= 0.82.4), + python-configobj (>= 4.4.0), + subversion (>= 1.4.6), + meld (>=1.1.2), + ipython (>=0.7.1), + hicolor-icon-theme (>= 0.10-2), + python-dulwich +Conflicts: nautilussvn, rabbitvcs +Replaces: nautilussvn +Description: Easy version control + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + There are extensions for Nautilus, Thunar and GEdit, and a simple command-line + interface. + +Package: rabbitvcs-cli +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + rabbitvcs-core (>= 0.15) +Description: Command line interface for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the command-line interface. + +Package: rabbitvcs-gedit +Architecture: all +Depends: ${misc:Depends}, + gedit, + rabbitvcs-core (>= 0.15) +Description: Gedit extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for gedit text editor. + +Package: rabbitvcs-nautilus +Architecture: all +Depends: ${misc:Depends}, + nautilus (<< 3.0~), + python-nautilus (>= 0.5.0~), + python-nautilus (<< 1.0~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 2 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v2 only). + +Package: rabbitvcs-nautilus3 +Architecture: all +Depends: ${misc:Depends}, + nautilus (>= 3~), + python-nautilus (>= 1.0~), + python-gobject (>= 2.28.2~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 3 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v3.0 or greater). + +Package: rabbitvcs-thunar +Architecture: all +Depends: ${misc:Depends}, + thunar (>= 0.4.0), + thunarx-python (>= 0.2.0), + rabbitvcs-core (>= 0.15) +Description: Thunar extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Thunar file manager. + diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/copyright rabbitvcs-0.15.0.5/packages/maverick/debian/copyright --- rabbitvcs-0.13.1/packages/maverick/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/copyright 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,92 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 +Name: rabbitvcs +Contact: RabbitVCS Team +Source: http://code.google.com/p/rabbitvcs/ + +Files: * +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2010, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: debian/* +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2011, Jason Heeris +License: GPL-3+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-3' + file. + +Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg +Copyright: TortoiseSVN +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/util/decorators.py +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2005-2009, Bastian Kleineidam + 2009, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/debug/ipython_view.py +Copyright: 2007, IBM Corporation +License: + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of the IBM nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +Files: rabbitvcs/ui/wraplabel.py +Copyright: 2005, VMware Inc. +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/maverick/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/maverick/debian/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/patches/99_setup.py.patch 2011-11-06 11:58:28.000000000 +0000 @@ -0,0 +1,24 @@ +Description: Remove GTK icon cache rebuilding. + This removes the rebuilding of the GTK icon cache after installing the core. + It is not needed in any distro with hicolor-icon-theme >= 0.10-2 +Forwarded: not-needed +Author: Jason Heeris + +diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.15/setup.py rabbitvcs-0.15.new/setup.py +--- rabbitvcs-0.15/setup.py 2011-11-06 11:32:48.053065966 +0800 ++++ rabbitvcs-0.15.new/setup.py 2011-11-06 11:33:02.232892091 +0800 +@@ -154,14 +154,3 @@ + # + # Post installation + # +- +-# Make sure the icon cache is deleted and recreated +-if sys.argv[1] == "install": +- +- if os.uname()[0] != 'Darwin': +- print "Running gtk-update-icon-cache" +- +- subprocess.Popen( +- ["gtk-update-icon-cache", icon_theme_directory], +- stdout=subprocess.PIPE +- ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/patches/series rabbitvcs-0.15.0.5/packages/maverick/debian/patches/series --- rabbitvcs-0.13.1/packages/maverick/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/patches/series 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +99_setup.py.patch diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/pycompat rabbitvcs-0.15.0.5/packages/maverick/debian/pycompat --- rabbitvcs-0.13.1/packages/maverick/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/pycompat 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +2 diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/pyversions rabbitvcs-0.15.0.5/packages/maverick/debian/pyversions --- rabbitvcs-0.13.1/packages/maverick/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/pyversions 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +2.5- diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs.1 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,36 @@ +.\"Created with GNOME Manpages Editor Wizard +.\"http://sourceforge.net/projects/gmanedit2 +.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" + +.SH NAME +rabbitvcs \- Integrated version control for Nautilus + +.SH SYNOPSIS +.B rabbitvcs + [path1] [path2] ... +.br + +.SH DESCRIPTION +.B rabbitvcs +provides integrated support for various version control version systems in +the Nautilus file manager (currently only subversion). This command opens +a new +.B nautilus +window and applies the given VCS command. + +.SH OPTIONS +.B +.IP module +The VCS command to invoke. Available modules are: about, add, blame, checkout, +cleanup, commit, create, delete, export, ignore, import, lock, log, merge, +properties, relocate, rename, resolve, revert, settings, switch, unlock, update, +updateto + +.B +.IP path +The file(s) or directory(\-ies) to apply the action to. + +.SH "SEE ALSO" +.B nautilus(1) +, +.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-cli.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +clients/cli/rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-cli.manpages 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-core.install rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-core.install --- rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-core.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-core.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/* . diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-gedit.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,2 @@ +clients/gedit/rabbitvcs-plugin.py usr/lib/gedit-2/plugins +clients/gedit/rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-nautilus3.install rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-nautilus3.install --- rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-nautilus3.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-nautilus3.install 2011-11-06 12:12:52.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/share/nautilus-python/extensions diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-nautilus.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/maverick/debian/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rabbitvcs-thunar.install 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,2 @@ +clients/thunar/RabbitVCS.py usr/lib/thunarx-2/python +clients/thunar/RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/rules rabbitvcs-0.15.0.5/packages/maverick/debian/rules --- rabbitvcs-0.13.1/packages/maverick/debian/rules 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/rules 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,7 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +# export DH_VERBOSE=1 + +%: + dh $@ diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/source/format rabbitvcs-0.15.0.5/packages/maverick/debian/source/format --- rabbitvcs-0.13.1/packages/maverick/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/source/format 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/maverick/debian/watch rabbitvcs-0.15.0.5/packages/maverick/debian/watch --- rabbitvcs-0.13.1/packages/maverick/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/maverick/debian/watch 2010-11-27 17:28:25.000000000 +0000 @@ -0,0 +1,5 @@ +version=3 +opts=\ +downloadurlmangle=s|.*[?]name=(.*?)&.*|http://rabbitvcs.googlecode.com/files/$1|,\ +filenamemangle=s|[^/]+[?]name=(.*?)&.*|$1| \ +http://code.google.com/p/rabbitvcs/downloads/detail[?]name=rabbitvcs-([0-9.]+).tar.gz&.* diff -Nru rabbitvcs-0.13.1/packages/natty/debian/changelog rabbitvcs-0.15.0.5/packages/natty/debian/changelog --- rabbitvcs-0.13.1/packages/natty/debian/changelog 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/changelog 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1,13 @@ +rabbitvcs (0.15.0.1-1~natty) natty; urgency=low + + * New upstream release + * New client for Nautilus 3 + + -- Jason Heeris Sun, 06 Nov 2011 19:59:03 +0800 + +rabbitvcs (0.14.2.1-2~natty) natty; urgency=low + + * First packaging for Natty. + + -- Jason Heeris Wed, 15 Jun 2011 09:29:06 +0800 + diff -Nru rabbitvcs-0.13.1/packages/natty/debian/clean rabbitvcs-0.15.0.5/packages/natty/debian/clean --- rabbitvcs-0.13.1/packages/natty/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/clean 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +rabbitvcs/buildinfo.py + diff -Nru rabbitvcs-0.13.1/packages/natty/debian/compat rabbitvcs-0.15.0.5/packages/natty/debian/compat --- rabbitvcs-0.13.1/packages/natty/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/compat 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +7 diff -Nru rabbitvcs-0.13.1/packages/natty/debian/control rabbitvcs-0.15.0.5/packages/natty/debian/control --- rabbitvcs-0.13.1/packages/natty/debian/control 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/control 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1,89 @@ +Source: rabbitvcs +Maintainer: Jason Heeris +Section: devel +Priority: optional +Build-Depends: debhelper (>= 7), + python (>= 2.5.2) +Build-Depends-Indep: python-support (>= 0.5.3), + pkg-config (>= 0.20) +Standards-Version: 3.9.2.0 +XS-Python-Version: >= 2.5 +Homepage: http://www.rabbitvcs.org + +Package: rabbitvcs-core +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + python-gtk2 (>= 2.12.1), + python-gobject (>= 2.14.1), + python-svn (>= 1.5.2), + python-dbus (>= 0.82.4), + python-configobj (>= 4.4.0), + subversion (>= 1.4.6), + meld (>=1.1.2), + ipython (>=0.7.1), + hicolor-icon-theme (>= 0.10-2), + python-dulwich +Conflicts: nautilussvn, rabbitvcs +Replaces: nautilussvn +Description: Easy version control + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + There are extensions for Nautilus, Thunar and GEdit, and a simple command-line + interface. + +Package: rabbitvcs-cli +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + rabbitvcs-core (>= 0.15) +Description: Command line interface for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the command-line interface. + +Package: rabbitvcs-gedit +Architecture: all +Depends: ${misc:Depends}, + gedit, + rabbitvcs-core (>= 0.15) +Description: Gedit extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for gedit text editor. + +Package: rabbitvcs-nautilus +Architecture: all +Depends: ${misc:Depends}, + nautilus (<< 3.0~), + python-nautilus (>= 0.5.0~), + python-nautilus (<< 1.0~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 2 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v2 only). + +Package: rabbitvcs-nautilus3 +Architecture: all +Depends: ${misc:Depends}, + nautilus (>= 3~), + python-nautilus (>= 1.0~), + python-gobject (>= 2.28.2~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 3 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v3.0 or greater). + +Package: rabbitvcs-thunar +Architecture: all +Depends: ${misc:Depends}, + thunar (>= 0.4.0), + thunarx-python (>= 0.2.0), + rabbitvcs-core (>= 0.15) +Description: Thunar extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Thunar file manager. + diff -Nru rabbitvcs-0.13.1/packages/natty/debian/copyright rabbitvcs-0.15.0.5/packages/natty/debian/copyright --- rabbitvcs-0.13.1/packages/natty/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/copyright 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,92 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 +Name: rabbitvcs +Contact: RabbitVCS Team +Source: http://code.google.com/p/rabbitvcs/ + +Files: * +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2010, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: debian/* +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2011, Jason Heeris +License: GPL-3+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-3' + file. + +Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg +Copyright: TortoiseSVN +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/util/decorators.py +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2005-2009, Bastian Kleineidam + 2009, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/debug/ipython_view.py +Copyright: 2007, IBM Corporation +License: + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of the IBM nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +Files: rabbitvcs/ui/wraplabel.py +Copyright: 2005, VMware Inc. +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/natty/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/natty/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/natty/debian/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/patches/99_setup.py.patch 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1,24 @@ +Description: Remove GTK icon cache rebuilding. + This removes the rebuilding of the GTK icon cache after installing the core. + It is not needed in any distro with hicolor-icon-theme >= 0.10-2 +Forwarded: not-needed +Author: Jason Heeris + +diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.15/setup.py rabbitvcs-0.15.new/setup.py +--- rabbitvcs-0.15/setup.py 2011-11-06 11:32:48.053065966 +0800 ++++ rabbitvcs-0.15.new/setup.py 2011-11-06 11:33:02.232892091 +0800 +@@ -154,14 +154,3 @@ + # + # Post installation + # +- +-# Make sure the icon cache is deleted and recreated +-if sys.argv[1] == "install": +- +- if os.uname()[0] != 'Darwin': +- print "Running gtk-update-icon-cache" +- +- subprocess.Popen( +- ["gtk-update-icon-cache", icon_theme_directory], +- stdout=subprocess.PIPE +- ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/natty/debian/patches/series rabbitvcs-0.15.0.5/packages/natty/debian/patches/series --- rabbitvcs-0.13.1/packages/natty/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/patches/series 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +99_setup.py.patch diff -Nru rabbitvcs-0.13.1/packages/natty/debian/pycompat rabbitvcs-0.15.0.5/packages/natty/debian/pycompat --- rabbitvcs-0.13.1/packages/natty/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/pycompat 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +2 diff -Nru rabbitvcs-0.13.1/packages/natty/debian/pyversions rabbitvcs-0.15.0.5/packages/natty/debian/pyversions --- rabbitvcs-0.13.1/packages/natty/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/pyversions 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +2.5- diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs.1 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,36 @@ +.\"Created with GNOME Manpages Editor Wizard +.\"http://sourceforge.net/projects/gmanedit2 +.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" + +.SH NAME +rabbitvcs \- Integrated version control for Nautilus + +.SH SYNOPSIS +.B rabbitvcs + [path1] [path2] ... +.br + +.SH DESCRIPTION +.B rabbitvcs +provides integrated support for various version control version systems in +the Nautilus file manager (currently only subversion). This command opens +a new +.B nautilus +window and applies the given VCS command. + +.SH OPTIONS +.B +.IP module +The VCS command to invoke. Available modules are: about, add, blame, checkout, +cleanup, commit, create, delete, export, ignore, import, lock, log, merge, +properties, relocate, rename, resolve, revert, settings, switch, unlock, update, +updateto + +.B +.IP path +The file(s) or directory(\-ies) to apply the action to. + +.SH "SEE ALSO" +.B nautilus(1) +, +.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-cli.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +clients/cli/rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-cli.manpages 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-core.install rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-core.install --- rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-core.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-core.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/* . diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-gedit.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +clients/gedit/rabbitvcs-plugin.py usr/lib/gedit-2/plugins +clients/gedit/rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-nautilus3.install rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-nautilus3.install --- rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-nautilus3.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-nautilus3.install 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/share/nautilus-python/extensions diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-nautilus.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/natty/debian/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rabbitvcs-thunar.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +clients/thunar/RabbitVCS.py usr/lib/thunarx-2/python +clients/thunar/RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/natty/debian/rules rabbitvcs-0.15.0.5/packages/natty/debian/rules --- rabbitvcs-0.13.1/packages/natty/debian/rules 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/rules 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,7 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +# export DH_VERBOSE=1 + +%: + dh $@ diff -Nru rabbitvcs-0.13.1/packages/natty/debian/source/format rabbitvcs-0.15.0.5/packages/natty/debian/source/format --- rabbitvcs-0.13.1/packages/natty/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/source/format 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/natty/debian/watch rabbitvcs-0.15.0.5/packages/natty/debian/watch --- rabbitvcs-0.13.1/packages/natty/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/natty/debian/watch 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,5 @@ +version=3 +opts=\ +downloadurlmangle=s|.*[?]name=(.*?)&.*|http://rabbitvcs.googlecode.com/files/$1|,\ +filenamemangle=s|[^/]+[?]name=(.*?)&.*|$1| \ +http://code.google.com/p/rabbitvcs/downloads/detail[?]name=rabbitvcs-([0-9.]+).tar.gz&.* diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/changelog rabbitvcs-0.15.0.5/packages/nautilus/debian/changelog --- rabbitvcs-0.13.1/packages/nautilus/debian/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-nautilus (0.13-1) unstable; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 19:12:23 +0800 - -rabbitvcs-nautilus (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/compat rabbitvcs-0.15.0.5/packages/nautilus/debian/compat --- rabbitvcs-0.13.1/packages/nautilus/debian/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/config rabbitvcs-0.15.0.5/packages/nautilus/debian/config --- rabbitvcs-0.13.1/packages/nautilus/debian/config 2010-03-05 17:18:09.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/config 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#!/bin/sh -e - -# Source debconf library. -. /usr/share/debconf/confmodule - -db_input high rabbitvcs/rabbitvcs-restart-required || true - -db_go diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/control rabbitvcs-0.15.0.5/packages/nautilus/debian/control --- rabbitvcs-0.13.1/packages/nautilus/debian/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-nautilus -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-nautilus -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - nautilus, - python-nautilus (>= 0.5.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Nautilus extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Nautilus file manager. diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/copyright rabbitvcs-0.15.0.5/packages/nautilus/debian/copyright --- rabbitvcs-0.13.1/packages/nautilus/debian/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/postinst rabbitvcs-0.15.0.5/packages/nautilus/debian/postinst --- rabbitvcs-0.13.1/packages/nautilus/debian/postinst 2010-03-05 17:18:09.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -#!/bin/sh -e - -# Source debconf module -. /usr/share/debconf/confmodule - -# Identifies the point in the file at which debhelper will insert automatically -# added snippets. -#DEBHELPER# - -# An installation process can be roll backed in which case we don't want to do -# anything. -if [ "$1" != configure ]; then - exit 0 -fi diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/nautilus/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/nautilus/debian/rabbitvcs-nautilus.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/rules rabbitvcs-0.15.0.5/packages/nautilus/debian/rules --- rabbitvcs-0.13.1/packages/nautilus/debian/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/templates rabbitvcs-0.15.0.5/packages/nautilus/debian/templates --- rabbitvcs-0.13.1/packages/nautilus/debian/templates 2010-03-05 17:18:09.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/templates 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -Template: rabbitvcs/rabbitvcs-restart-required -Type: text -Description: RabbitVCS requires Nautilus restart. - RabbitVCS will not take effect until Nautilus is restarted, or until the next time you log in. diff -Nru rabbitvcs-0.13.1/packages/nautilus/debian/watch rabbitvcs-0.15.0.5/packages/nautilus/debian/watch --- rabbitvcs-0.13.1/packages/nautilus/debian/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/debian/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-nautilus-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/changelog rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/changelog --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-nautilus (0.13-1~hardy) hardy; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 19:12:23 +0800 - -rabbitvcs-nautilus (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/compat rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/compat --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/config rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/config --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/config 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/config 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#!/bin/sh -e - -# Source debconf library. -. /usr/share/debconf/confmodule - -db_input high rabbitvcs/rabbitvcs-restart-required || true - -db_go diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/control rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/control --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-nautilus -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-nautilus -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - nautilus, - python-nautilus (>= 0.5.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Nautilus extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Nautilus file manager. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/copyright rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/copyright --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/postinst rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/postinst --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/postinst 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -#!/bin/sh -e - -# Source debconf module -. /usr/share/debconf/confmodule - -# Identifies the point in the file at which debhelper will insert automatically -# added snippets. -#DEBHELPER# - -# An installation process can be roll backed in which case we don't want to do -# anything. -if [ "$1" != configure ]; then - exit 0 -fi diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/rabbitvcs-nautilus.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/rules rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/rules --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installdebconf diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/templates rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/templates --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/templates 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/templates 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -Template: rabbitvcs/rabbitvcs-restart-required -Type: text -Description: RabbitVCS requires Nautilus restart. - RabbitVCS will not take effect until Nautilus is restarted, or until the next time you log in. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/watch rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/watch --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-hardy/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-hardy/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-nautilus-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/changelog rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/changelog --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-nautilus (0.13-1~intrepid) intrepid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 19:12:23 +0800 - -rabbitvcs-nautilus (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/compat rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/compat --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/config rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/config --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/config 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/config 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#!/bin/sh -e - -# Source debconf library. -. /usr/share/debconf/confmodule - -db_input high rabbitvcs/rabbitvcs-restart-required || true - -db_go diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/control rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/control --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-nautilus -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-nautilus -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - nautilus, - python-nautilus (>= 0.5.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Nautilus extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Nautilus file manager. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/copyright rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/copyright --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/postinst rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/postinst --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/postinst 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -#!/bin/sh -e - -# Source debconf module -. /usr/share/debconf/confmodule - -# Identifies the point in the file at which debhelper will insert automatically -# added snippets. -#DEBHELPER# - -# An installation process can be roll backed in which case we don't want to do -# anything. -if [ "$1" != configure ]; then - exit 0 -fi diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/rabbitvcs-nautilus.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/rules rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/rules --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installdebconf diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/templates rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/templates --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/templates 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/templates 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -Template: rabbitvcs/rabbitvcs-restart-required -Type: text -Description: RabbitVCS requires Nautilus restart. - RabbitVCS will not take effect until Nautilus is restarted, or until the next time you log in. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/watch rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/watch --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-intrepid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-intrepid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-nautilus-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/changelog rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/changelog --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-nautilus (0.13-1~jaunty) jaunty; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 19:12:23 +0800 - -rabbitvcs-nautilus (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/compat rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/compat --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/config rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/config --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/config 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/config 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#!/bin/sh -e - -# Source debconf library. -. /usr/share/debconf/confmodule - -db_input high rabbitvcs/rabbitvcs-restart-required || true - -db_go diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/control rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/control --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-nautilus -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-nautilus -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - nautilus, - python-nautilus (>= 0.5.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Nautilus extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Nautilus file manager. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/copyright rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/copyright --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/postinst rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/postinst --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/postinst 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -#!/bin/sh -e - -# Source debconf module -. /usr/share/debconf/confmodule - -# Identifies the point in the file at which debhelper will insert automatically -# added snippets. -#DEBHELPER# - -# An installation process can be roll backed in which case we don't want to do -# anything. -if [ "$1" != configure ]; then - exit 0 -fi diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/rabbitvcs-nautilus.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/rules rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/rules --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installdebconf diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/templates rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/templates --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/templates 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/templates 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -Template: rabbitvcs/rabbitvcs-restart-required -Type: text -Description: RabbitVCS requires Nautilus restart. - RabbitVCS will not take effect until Nautilus is restarted, or until the next time you log in. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/watch rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/watch --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-jaunty/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-jaunty/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-nautilus-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/changelog rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/changelog --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-nautilus (0.13-1~karmic) karmic; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 19:12:23 +0800 - -rabbitvcs-nautilus (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/compat rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/compat --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/config rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/config --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/config 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/config 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#!/bin/sh -e - -# Source debconf library. -. /usr/share/debconf/confmodule - -db_input high rabbitvcs/rabbitvcs-restart-required || true - -db_go diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/control rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/control --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-nautilus -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-nautilus -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - nautilus, - python-nautilus (>= 0.5.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Nautilus extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Nautilus file manager. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/copyright rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/copyright --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/postinst rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/postinst --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/postinst 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -#!/bin/sh -e - -# Source debconf module -. /usr/share/debconf/confmodule - -# Identifies the point in the file at which debhelper will insert automatically -# added snippets. -#DEBHELPER# - -# An installation process can be roll backed in which case we don't want to do -# anything. -if [ "$1" != configure ]; then - exit 0 -fi diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/rabbitvcs-nautilus.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/rules rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/rules --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installdebconf diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/templates rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/templates --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/templates 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/templates 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -Template: rabbitvcs/rabbitvcs-restart-required -Type: text -Description: RabbitVCS requires Nautilus restart. - RabbitVCS will not take effect until Nautilus is restarted, or until the next time you log in. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/watch rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/watch --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-karmic/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-karmic/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-nautilus-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/changelog rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/changelog --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-nautilus (0.13-1~lucid) lucid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 19:12:23 +0800 - -rabbitvcs-nautilus (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/compat rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/compat --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/config rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/config --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/config 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/config 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#!/bin/sh -e - -# Source debconf library. -. /usr/share/debconf/confmodule - -db_input high rabbitvcs/rabbitvcs-restart-required || true - -db_go diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/control rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/control --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-nautilus -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-nautilus -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - nautilus, - python-nautilus (>= 0.5.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Nautilus extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Nautilus file manager. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/copyright rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/copyright --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. - - \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/postinst rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/postinst --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/postinst 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -#!/bin/sh -e - -# Source debconf module -. /usr/share/debconf/confmodule - -# Identifies the point in the file at which debhelper will insert automatically -# added snippets. -#DEBHELPER# - -# An installation process can be roll backed in which case we don't want to do -# anything. -if [ "$1" != configure ]; then - exit 0 -fi diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/rabbitvcs-nautilus.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/rules rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/rules --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs - dh_installdebconf diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/templates rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/templates --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/templates 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/templates 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -Template: rabbitvcs/rabbitvcs-restart-required -Type: text -Description: RabbitVCS requires Nautilus restart. - RabbitVCS will not take effect until Nautilus is restarted, or until the next time you log in. diff -Nru rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/watch rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/watch --- rabbitvcs-0.13.1/packages/nautilus/ubuntu-lucid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilus/ubuntu-lucid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-nautilus-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/nautilusold/README rabbitvcs-0.15.0.5/packages/nautilusold/README --- rabbitvcs-0.13.1/packages/nautilusold/README 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/nautilusold/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -The "nautilusold" component is not packaged. It is designed for older distributions that don't necessarily have predictable dependencies, and I don't think there would be a great benefit for the effort and research involved. - -If you disagree, feel free to raise the issue on the RabbitVCS users list or at our current bug tracker. - -Jason Heeris - diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/changelog rabbitvcs-0.15.0.5/packages/oneiric/debian/changelog --- rabbitvcs-0.13.1/packages/oneiric/debian/changelog 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/changelog 2011-11-06 12:20:11.000000000 +0000 @@ -0,0 +1,5 @@ +rabbitvcs (0.15.0.1-1~oneiric) oneiric; urgency=low + + * Initial packaging for Oneiric + + -- Jason Heeris Sun, 06 Nov 2011 20:15:57 +0800 diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/clean rabbitvcs-0.15.0.5/packages/oneiric/debian/clean --- rabbitvcs-0.13.1/packages/oneiric/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/clean 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +rabbitvcs/buildinfo.py + diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/compat rabbitvcs-0.15.0.5/packages/oneiric/debian/compat --- rabbitvcs-0.13.1/packages/oneiric/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/compat 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +7 diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/control rabbitvcs-0.15.0.5/packages/oneiric/debian/control --- rabbitvcs-0.13.1/packages/oneiric/debian/control 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/control 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1,89 @@ +Source: rabbitvcs +Maintainer: Jason Heeris +Section: devel +Priority: optional +Build-Depends: debhelper (>= 7), + python (>= 2.5.2) +Build-Depends-Indep: python-support (>= 0.5.3), + pkg-config (>= 0.20) +Standards-Version: 3.9.2.0 +XS-Python-Version: >= 2.5 +Homepage: http://www.rabbitvcs.org + +Package: rabbitvcs-core +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + python-gtk2 (>= 2.12.1), + python-gobject (>= 2.14.1), + python-svn (>= 1.5.2), + python-dbus (>= 0.82.4), + python-configobj (>= 4.4.0), + subversion (>= 1.4.6), + meld (>=1.1.2), + ipython (>=0.7.1), + hicolor-icon-theme (>= 0.10-2), + python-dulwich +Conflicts: nautilussvn, rabbitvcs +Replaces: nautilussvn +Description: Easy version control + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + There are extensions for Nautilus, Thunar and GEdit, and a simple command-line + interface. + +Package: rabbitvcs-cli +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + rabbitvcs-core (>= 0.15) +Description: Command line interface for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the command-line interface. + +Package: rabbitvcs-gedit +Architecture: all +Depends: ${misc:Depends}, + gedit, + rabbitvcs-core (>= 0.15) +Description: Gedit extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for gedit text editor. + +Package: rabbitvcs-nautilus +Architecture: all +Depends: ${misc:Depends}, + nautilus (<< 3.0~), + python-nautilus (>= 0.5.0~), + python-nautilus (<< 1.0~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 2 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v2 only). + +Package: rabbitvcs-nautilus3 +Architecture: all +Depends: ${misc:Depends}, + nautilus (>= 3~), + python-nautilus (>= 1.0~), + python-gobject (>= 2.28.2~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 3 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v3.0 or greater). + +Package: rabbitvcs-thunar +Architecture: all +Depends: ${misc:Depends}, + thunar (>= 0.4.0), + thunarx-python (>= 0.2.0), + rabbitvcs-core (>= 0.15) +Description: Thunar extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Thunar file manager. + diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/copyright rabbitvcs-0.15.0.5/packages/oneiric/debian/copyright --- rabbitvcs-0.13.1/packages/oneiric/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/copyright 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,92 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 +Name: rabbitvcs +Contact: RabbitVCS Team +Source: http://code.google.com/p/rabbitvcs/ + +Files: * +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2010, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: debian/* +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2011, Jason Heeris +License: GPL-3+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-3' + file. + +Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg +Copyright: TortoiseSVN +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/util/decorators.py +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2005-2009, Bastian Kleineidam + 2009, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/debug/ipython_view.py +Copyright: 2007, IBM Corporation +License: + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of the IBM nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +Files: rabbitvcs/ui/wraplabel.py +Copyright: 2005, VMware Inc. +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/oneiric/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/oneiric/debian/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/patches/99_setup.py.patch 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1,24 @@ +Description: Remove GTK icon cache rebuilding. + This removes the rebuilding of the GTK icon cache after installing the core. + It is not needed in any distro with hicolor-icon-theme >= 0.10-2 +Forwarded: not-needed +Author: Jason Heeris + +diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.15/setup.py rabbitvcs-0.15.new/setup.py +--- rabbitvcs-0.15/setup.py 2011-11-06 11:32:48.053065966 +0800 ++++ rabbitvcs-0.15.new/setup.py 2011-11-06 11:33:02.232892091 +0800 +@@ -154,14 +154,3 @@ + # + # Post installation + # +- +-# Make sure the icon cache is deleted and recreated +-if sys.argv[1] == "install": +- +- if os.uname()[0] != 'Darwin': +- print "Running gtk-update-icon-cache" +- +- subprocess.Popen( +- ["gtk-update-icon-cache", icon_theme_directory], +- stdout=subprocess.PIPE +- ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/patches/series rabbitvcs-0.15.0.5/packages/oneiric/debian/patches/series --- rabbitvcs-0.13.1/packages/oneiric/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/patches/series 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +99_setup.py.patch diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/pycompat rabbitvcs-0.15.0.5/packages/oneiric/debian/pycompat --- rabbitvcs-0.13.1/packages/oneiric/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/pycompat 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +2 diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/pyversions rabbitvcs-0.15.0.5/packages/oneiric/debian/pyversions --- rabbitvcs-0.13.1/packages/oneiric/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/pyversions 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +2.5- diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs.1 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,36 @@ +.\"Created with GNOME Manpages Editor Wizard +.\"http://sourceforge.net/projects/gmanedit2 +.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" + +.SH NAME +rabbitvcs \- Integrated version control for Nautilus + +.SH SYNOPSIS +.B rabbitvcs + [path1] [path2] ... +.br + +.SH DESCRIPTION +.B rabbitvcs +provides integrated support for various version control version systems in +the Nautilus file manager (currently only subversion). This command opens +a new +.B nautilus +window and applies the given VCS command. + +.SH OPTIONS +.B +.IP module +The VCS command to invoke. Available modules are: about, add, blame, checkout, +cleanup, commit, create, delete, export, ignore, import, lock, log, merge, +properties, relocate, rename, resolve, revert, settings, switch, unlock, update, +updateto + +.B +.IP path +The file(s) or directory(\-ies) to apply the action to. + +.SH "SEE ALSO" +.B nautilus(1) +, +.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-cli.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +clients/cli/rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-cli.manpages 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-core.install rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-core.install --- rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-core.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-core.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/* . diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-gedit.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +clients/gedit/rabbitvcs-plugin.py usr/lib/gedit-2/plugins +clients/gedit/rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-nautilus3.install rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-nautilus3.install --- rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-nautilus3.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-nautilus3.install 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/share/nautilus-python/extensions diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-nautilus.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/oneiric/debian/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rabbitvcs-thunar.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +clients/thunar/RabbitVCS.py usr/lib/thunarx-2/python +clients/thunar/RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/rules rabbitvcs-0.15.0.5/packages/oneiric/debian/rules --- rabbitvcs-0.13.1/packages/oneiric/debian/rules 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/rules 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,7 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +# export DH_VERBOSE=1 + +%: + dh $@ diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/source/format rabbitvcs-0.15.0.5/packages/oneiric/debian/source/format --- rabbitvcs-0.13.1/packages/oneiric/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/source/format 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/oneiric/debian/watch rabbitvcs-0.15.0.5/packages/oneiric/debian/watch --- rabbitvcs-0.13.1/packages/oneiric/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/oneiric/debian/watch 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,5 @@ +version=3 +opts=\ +downloadurlmangle=s|.*[?]name=(.*?)&.*|http://rabbitvcs.googlecode.com/files/$1|,\ +filenamemangle=s|[^/]+[?]name=(.*?)&.*|$1| \ +http://code.google.com/p/rabbitvcs/downloads/detail[?]name=rabbitvcs-([0-9.]+).tar.gz&.* diff -Nru rabbitvcs-0.13.1/packages/precise/debian/changelog rabbitvcs-0.15.0.5/packages/precise/debian/changelog --- rabbitvcs-0.13.1/packages/precise/debian/changelog 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/changelog 2011-11-06 12:50:35.000000000 +0000 @@ -0,0 +1,5 @@ +rabbitvcs (0.15.0.1-1~precise) precise; urgency=low + + * Initial packaging for precise + + -- Jason Heeris Sun, 06 Nov 2011 20:15:57 +0800 diff -Nru rabbitvcs-0.13.1/packages/precise/debian/clean rabbitvcs-0.15.0.5/packages/precise/debian/clean --- rabbitvcs-0.13.1/packages/precise/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/clean 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +rabbitvcs/buildinfo.py + diff -Nru rabbitvcs-0.13.1/packages/precise/debian/compat rabbitvcs-0.15.0.5/packages/precise/debian/compat --- rabbitvcs-0.13.1/packages/precise/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/compat 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +7 diff -Nru rabbitvcs-0.13.1/packages/precise/debian/control rabbitvcs-0.15.0.5/packages/precise/debian/control --- rabbitvcs-0.13.1/packages/precise/debian/control 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/control 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1,89 @@ +Source: rabbitvcs +Maintainer: Jason Heeris +Section: devel +Priority: optional +Build-Depends: debhelper (>= 7), + python (>= 2.5.2) +Build-Depends-Indep: python-support (>= 0.5.3), + pkg-config (>= 0.20) +Standards-Version: 3.9.2.0 +XS-Python-Version: >= 2.5 +Homepage: http://www.rabbitvcs.org + +Package: rabbitvcs-core +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + python-gtk2 (>= 2.12.1), + python-gobject (>= 2.14.1), + python-svn (>= 1.5.2), + python-dbus (>= 0.82.4), + python-configobj (>= 4.4.0), + subversion (>= 1.4.6), + meld (>=1.1.2), + ipython (>=0.7.1), + hicolor-icon-theme (>= 0.10-2), + python-dulwich +Conflicts: nautilussvn, rabbitvcs +Replaces: nautilussvn +Description: Easy version control + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + There are extensions for Nautilus, Thunar and GEdit, and a simple command-line + interface. + +Package: rabbitvcs-cli +Architecture: all +Depends: ${misc:Depends}, + ${python:Depends}, + rabbitvcs-core (>= 0.15) +Description: Command line interface for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the command-line interface. + +Package: rabbitvcs-gedit +Architecture: all +Depends: ${misc:Depends}, + gedit, + rabbitvcs-core (>= 0.15) +Description: Gedit extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for gedit text editor. + +Package: rabbitvcs-nautilus +Architecture: all +Depends: ${misc:Depends}, + nautilus (<< 3.0~), + python-nautilus (>= 0.5.0~), + python-nautilus (<< 1.0~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 2 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v2 only). + +Package: rabbitvcs-nautilus3 +Architecture: all +Depends: ${misc:Depends}, + nautilus (>= 3~), + python-nautilus (>= 1.0~), + python-gobject (>= 2.28.2~), + rabbitvcs-core (>= 0.15) +Description: Nautilus 3 extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Nautilus file manager (v3.0 or greater). + +Package: rabbitvcs-thunar +Architecture: all +Depends: ${misc:Depends}, + thunar (>= 0.4.0), + thunarx-python (>= 0.2.0), + rabbitvcs-core (>= 0.15) +Description: Thunar extension for RabbitVCS + RabbitVCS is a set of graphical tools written to provide simple and + straightforward access to the version control systems SVN (Subversion) and Git. + This is the extension for the Thunar file manager. + diff -Nru rabbitvcs-0.13.1/packages/precise/debian/copyright rabbitvcs-0.15.0.5/packages/precise/debian/copyright --- rabbitvcs-0.13.1/packages/precise/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/copyright 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,92 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 +Name: rabbitvcs +Contact: RabbitVCS Team +Source: http://code.google.com/p/rabbitvcs/ + +Files: * +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2010, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: debian/* +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2009-2011, Jason Heeris +License: GPL-3+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-3' + file. + +Files: rabbitvcs/data/icons/hicolor/scalable/emblems/*.svg +Copyright: TortoiseSVN +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/util/decorators.py +Copyright: 2006-2008, Jason Field + 2007-2008, Bruce van der Kooij + 2008-2008, Adam Plumb + 2005-2009, Bastian Kleineidam + 2009, Jason Heeris +License: GPL-2+ + On Debian systems the full text of the GNU General Public + License can be found in the `/usr/share/common-licenses/GPL-2' + file. + +Files: rabbitvcs/debug/ipython_view.py +Copyright: 2007, IBM Corporation +License: + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of the IBM nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +Files: rabbitvcs/ui/wraplabel.py +Copyright: 2005, VMware Inc. +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff -Nru rabbitvcs-0.13.1/packages/precise/debian/patches/99_setup.py.patch rabbitvcs-0.15.0.5/packages/precise/debian/patches/99_setup.py.patch --- rabbitvcs-0.13.1/packages/precise/debian/patches/99_setup.py.patch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/patches/99_setup.py.patch 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1,24 @@ +Description: Remove GTK icon cache rebuilding. + This removes the rebuilding of the GTK icon cache after installing the core. + It is not needed in any distro with hicolor-icon-theme >= 0.10-2 +Forwarded: not-needed +Author: Jason Heeris + +diff -Nur -x '*.orig' -x '*~' rabbitvcs-0.15/setup.py rabbitvcs-0.15.new/setup.py +--- rabbitvcs-0.15/setup.py 2011-11-06 11:32:48.053065966 +0800 ++++ rabbitvcs-0.15.new/setup.py 2011-11-06 11:33:02.232892091 +0800 +@@ -154,14 +154,3 @@ + # + # Post installation + # +- +-# Make sure the icon cache is deleted and recreated +-if sys.argv[1] == "install": +- +- if os.uname()[0] != 'Darwin': +- print "Running gtk-update-icon-cache" +- +- subprocess.Popen( +- ["gtk-update-icon-cache", icon_theme_directory], +- stdout=subprocess.PIPE +- ).communicate()[0] diff -Nru rabbitvcs-0.13.1/packages/precise/debian/patches/series rabbitvcs-0.15.0.5/packages/precise/debian/patches/series --- rabbitvcs-0.13.1/packages/precise/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/patches/series 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +99_setup.py.patch diff -Nru rabbitvcs-0.13.1/packages/precise/debian/pycompat rabbitvcs-0.15.0.5/packages/precise/debian/pycompat --- rabbitvcs-0.13.1/packages/precise/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/pycompat 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +2 diff -Nru rabbitvcs-0.13.1/packages/precise/debian/pyversions rabbitvcs-0.15.0.5/packages/precise/debian/pyversions --- rabbitvcs-0.13.1/packages/precise/debian/pyversions 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/pyversions 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +2.5- diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs.1 rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs.1 --- rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs.1 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs.1 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,36 @@ +.\"Created with GNOME Manpages Editor Wizard +.\"http://sourceforge.net/projects/gmanedit2 +.TH rabbitvcs 1 "May 25, 2009" "" "rabbitvcs" + +.SH NAME +rabbitvcs \- Integrated version control for Nautilus + +.SH SYNOPSIS +.B rabbitvcs + [path1] [path2] ... +.br + +.SH DESCRIPTION +.B rabbitvcs +provides integrated support for various version control version systems in +the Nautilus file manager (currently only subversion). This command opens +a new +.B nautilus +window and applies the given VCS command. + +.SH OPTIONS +.B +.IP module +The VCS command to invoke. Available modules are: about, add, blame, checkout, +cleanup, commit, create, delete, export, ignore, import, lock, log, merge, +properties, relocate, rename, resolve, revert, settings, switch, unlock, update, +updateto + +.B +.IP path +The file(s) or directory(\-ies) to apply the action to. + +.SH "SEE ALSO" +.B nautilus(1) +, +.B svn(1) diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-cli.install rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-cli.install --- rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-cli.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-cli.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +clients/cli/rabbitvcs usr/bin diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-cli.manpages rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-cli.manpages --- rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-cli.manpages 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-cli.manpages 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +debian/rabbitvcs.1 diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-core.install rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-core.install --- rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-core.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-core.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/* . diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-gedit.install rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-gedit.install --- rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-gedit.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-gedit.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +clients/gedit/rabbitvcs-plugin.py usr/lib/gedit-2/plugins +clients/gedit/rabbitvcs.gedit-plugin usr/lib/gedit-2/plugins diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-nautilus3.install rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-nautilus3.install --- rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-nautilus3.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-nautilus3.install 2011-11-06 12:12:27.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/share/nautilus-python/extensions diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-nautilus.install rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-nautilus.install --- rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-nautilus.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-nautilus.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +clients/nautilus/RabbitVCS.py usr/lib/nautilus/extensions-2.0/python diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/precise/debian/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rabbitvcs-thunar.install 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,2 @@ +clients/thunar/RabbitVCS.py usr/lib/thunarx-2/python +clients/thunar/RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/precise/debian/rules rabbitvcs-0.15.0.5/packages/precise/debian/rules --- rabbitvcs-0.13.1/packages/precise/debian/rules 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/rules 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,7 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +# export DH_VERBOSE=1 + +%: + dh $@ diff -Nru rabbitvcs-0.13.1/packages/precise/debian/source/format rabbitvcs-0.15.0.5/packages/precise/debian/source/format --- rabbitvcs-0.13.1/packages/precise/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/source/format 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) \ No newline at end of file diff -Nru rabbitvcs-0.13.1/packages/precise/debian/watch rabbitvcs-0.15.0.5/packages/precise/debian/watch --- rabbitvcs-0.13.1/packages/precise/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/precise/debian/watch 2011-10-23 07:36:59.000000000 +0000 @@ -0,0 +1,5 @@ +version=3 +opts=\ +downloadurlmangle=s|.*[?]name=(.*?)&.*|http://rabbitvcs.googlecode.com/files/$1|,\ +filenamemangle=s|[^/]+[?]name=(.*?)&.*|$1| \ +http://code.google.com/p/rabbitvcs/downloads/detail[?]name=rabbitvcs-([0-9.]+).tar.gz&.* diff -Nru rabbitvcs-0.13.1/packages/thunar/debian/changelog rabbitvcs-0.15.0.5/packages/thunar/debian/changelog --- rabbitvcs-0.13.1/packages/thunar/debian/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/debian/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-thunar (0.13-1) unstable; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:47:10 +0800 - -rabbitvcs-thunar (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/thunar/debian/compat rabbitvcs-0.15.0.5/packages/thunar/debian/compat --- rabbitvcs-0.13.1/packages/thunar/debian/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/thunar/debian/control rabbitvcs-0.15.0.5/packages/thunar/debian/control --- rabbitvcs-0.13.1/packages/thunar/debian/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/debian/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-thunar -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-thunar -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - thunar (>= 0.4.0), - thunarx-python (>= 0.2.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Thunar extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Thunar file manager. diff -Nru rabbitvcs-0.13.1/packages/thunar/debian/copyright rabbitvcs-0.15.0.5/packages/thunar/debian/copyright --- rabbitvcs-0.13.1/packages/thunar/debian/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/debian/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/thunar/debian/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/thunar/debian/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/thunar/debian/rabbitvcs-thunar.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/debian/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -RabbitVCS.py usr/lib/thunarx-2/python -RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/thunar/debian/rules rabbitvcs-0.15.0.5/packages/thunar/debian/rules --- rabbitvcs-0.13.1/packages/thunar/debian/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/debian/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/thunar/debian/watch rabbitvcs-0.15.0.5/packages/thunar/debian/watch --- rabbitvcs-0.13.1/packages/thunar/debian/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/debian/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-thunar-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/changelog rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/changelog --- rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-thunar (0.13-1~hardy) hardy; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:47:10 +0800 - -rabbitvcs-thunar (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/compat rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/compat --- rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/control rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/control --- rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-thunar -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-thunar -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - thunar (>= 0.4.0), - thunarx-python (>= 0.2.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Thunar extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Thunar file manager. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/copyright rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/copyright --- rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/rabbitvcs-thunar.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -RabbitVCS.py usr/lib/thunarx-2/python -RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/rules rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/rules --- rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/watch rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/watch --- rabbitvcs-0.13.1/packages/thunar/ubuntu-hardy/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-hardy/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-thunar-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/changelog rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/changelog --- rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-thunar (0.13-1~intrepid) intrepid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:47:10 +0800 - -rabbitvcs-thunar (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/compat rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/compat --- rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/control rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/control --- rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-thunar -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-thunar -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - thunar (>= 0.4.0), - thunarx-python (>= 0.2.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Thunar extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Thunar file manager. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/copyright rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/copyright --- rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/rabbitvcs-thunar.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -RabbitVCS.py usr/lib/thunarx-2/python -RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/rules rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/rules --- rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/watch rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/watch --- rabbitvcs-0.13.1/packages/thunar/ubuntu-intrepid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-intrepid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-thunar-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/changelog rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/changelog --- rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-thunar (0.13-1~jaunty) jaunty; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:47:10 +0800 - -rabbitvcs-thunar (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/compat rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/compat --- rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/control rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/control --- rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-thunar -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-thunar -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - thunar (>= 0.4.0), - thunarx-python (>= 0.2.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Thunar extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Thunar file manager. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/copyright rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/copyright --- rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/rabbitvcs-thunar.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -RabbitVCS.py usr/lib/thunarx-2/python -RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/rules rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/rules --- rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/watch rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/watch --- rabbitvcs-0.13.1/packages/thunar/ubuntu-jaunty/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-jaunty/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-thunar-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/changelog rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/changelog --- rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-thunar (0.13-1~karmic) karmic; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:47:10 +0800 - -rabbitvcs-thunar (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/compat rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/compat --- rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/control rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/control --- rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-thunar -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-thunar -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - thunar (>= 0.4.0), - thunarx-python (>= 0.2.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Thunar extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Thunar file manager. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/copyright rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/copyright --- rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/rabbitvcs-thunar.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -RabbitVCS.py usr/lib/thunarx-2/python -RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/rules rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/rules --- rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/watch rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/watch --- rabbitvcs-0.13.1/packages/thunar/ubuntu-karmic/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-karmic/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-thunar-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/changelog rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/changelog --- rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/changelog 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/changelog 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -rabbitvcs-thunar (0.13-1~lucid) lucid; urgency=low - - * New upstream release. - - -- Jason Heeris Mon, 08 Feb 2010 18:47:10 +0800 - -rabbitvcs-thunar (0.13~beta1-1) unstable; urgency=low - - * New upstream beta release. - - -- Jason Heeris Sat, 30 Jan 2010 23:18:45 +0800 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/compat rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/compat --- rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/compat 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5 diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/control rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/control --- rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/control 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Source: rabbitvcs-thunar -Maintainer: Jason Heeris -Section: devel -Priority: optional -Build-Depends: debhelper (>= 7) -Standards-Version: 3.8.3 -Homepage: http://www.rabbitvcs.org - -Package: rabbitvcs-thunar -Architecture: all -Depends: ${misc:Depends}, - ${python:Depends}, - thunar (>= 0.4.0), - thunarx-python (>= 0.2.0), - rabbitvcs-core-beta (>= 0.13~beta1) | rabbitvcs-core (>= 0.13~beta1) -Conflicts: rabbitvcs (<< 0.13) -Replaces: nautilussvn -Description: Thunar extension for RabbitVCS - RabbitVCS is a set of graphical tools written to provide simple and - straightforward access to the version control systems you use. This is the - extension for the Thunar file manager. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/copyright rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/copyright --- rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/copyright 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/copyright 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=48 -Name: rabbitvcs -Contact: RabbitVCS Team -Source: http://code.google.com/p/rabbitvcs/ - -Files: * -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009-2010, Jason Heeris -License: GPL-2+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-2' - file. - -Files: debian/* -Copyright: 2006-2008, Jason Field - 2007-2008, Bruce van der Kooij - 2008-2008, Adam Plumb - 2009, Jason Heeris -License: GPL-3+ - On Debian systems the full text of the GNU General Public - License can be found in the `/usr/share/common-licenses/GPL-3' - file. diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/rabbitvcs-thunar.install rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/rabbitvcs-thunar.install --- rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/rabbitvcs-thunar.install 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/rabbitvcs-thunar.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -RabbitVCS.py usr/lib/thunarx-2/python -RabbitVCS.py usr/lib/thunarx-1/python diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/rules rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/rules --- rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/rules 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ - -install: - dh_install - dh_installdocs diff -Nru rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/watch rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/watch --- rabbitvcs-0.13.1/packages/thunar/ubuntu-lucid/watch 2010-03-14 06:46:14.000000000 +0000 +++ rabbitvcs-0.15.0.5/packages/thunar/ubuntu-lucid/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/rabbitvcs/downloads/list\ - http://rabbitvcs.googlecode.com/files/rabbitvcs-thunar-(.*).tar.gz diff -Nru rabbitvcs-0.13.1/po/cs.po rabbitvcs-0.15.0.5/po/cs.po --- rabbitvcs-0.13.1/po/cs.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/cs.po 2009-09-28 11:22:01.000000000 +0000 @@ -0,0 +1,1336 @@ +# Czech translation for rabbitvcs +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2009-03-04 14:35-0500\n" +"PO-Revision-Date: 2009-03-27 10:34+0000\n" +"Last-Translator: Ladislav Prskavec \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: ui/branch.py:71 +msgid "" +"There have been modifications to your working copy. If you copy from the " +"HEAD revision you will lose your changes." +msgstr "" + +#: ui/branch.py:89 +msgid "You must supply a destination path." +msgstr "" + +#: ui/branch.py:99 +msgid "The from revision field is required." +msgstr "Políčko z revize je povinné." + +#: ui/branch.py:108 +msgid "Invalid revision information" +msgstr "" + +#: ui/branch.py:123 ui/glade/branch.glade.h:4 +msgid "Branch/tag" +msgstr "Branch/tag" + +#: ui/branch.py:124 +msgid "Running Branch/tag Command..." +msgstr "Spuštím příkaz branch/tag" + +#: ui/branch.py:126 +msgid "Completed Branch/tag" +msgstr "Branch/tag dokončen." + +#: ui/updateto.py:70 +msgid "Update To Revision" +msgstr "Aktualizace na revizi" + +#: ui/updateto.py:71 ui/update.py:54 +msgid "Updating..." +msgstr "Aktualizuji" + +#: ui/updateto.py:79 ui/update.py:57 +msgid "Completed Update" +msgstr "Aktualizace dokončena." + +#: ui/rename.py:59 +msgid "The new name field is required" +msgstr "Políčko nové jméno je povinné" + +#: ui/rename.py:70 ui/glade/rename.glade.h:2 +msgid "Rename" +msgstr "Přejmenovat" + +#: ui/rename.py:71 +msgid "Running Rename Command..." +msgstr "Spouštím příkaz Přejmenovat" + +#: ui/rename.py:78 +msgid "Completed Rename" +msgstr "Přejmenování dokončeno." + +#: ui/annotate.py:51 +msgid "Cannot annotate a directory" +msgstr "Nemohu anotovat adresář" + +#: ui/annotate.py:58 +#, python-format +msgid "Annotate - %s" +msgstr "Anotace - %s" + +#: ui/annotate.py:71 +msgid "Line" +msgstr "Řádek" + +#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 +#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 +#: ui/glade/update.glade.h:6 +msgid "Revision" +msgstr "Revize" + +#: ui/annotate.py:71 ui/log.py:80 +msgid "Author" +msgstr "Autor" + +#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 +msgid "Date" +msgstr "Datum" + +#: ui/annotate.py:72 +msgid "Text" +msgstr "Test" + +#: ui/annotate.py:112 +msgid "The from revision field must be an integer" +msgstr "Políčko revize musí obsahovat číslo" + +#: ui/annotate.py:122 +msgid "Generating Annotation..." +msgstr "Generuji anotaci" + +#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 +msgid "Completed" +msgstr "Dokončeno" + +#: ui/settings.py:50 +msgid "English" +msgstr "Anglicky" + +#: ui/settings.py:156 ui/settings.py:165 +msgid "Select a program" +msgstr "Vyberte program" + +#: ui/settings.py:174 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Opravdu chcete vymazat cesty k repozitory?" + +#: ui/settings.py:181 +msgid "Repository paths cleared" +msgstr "Cesty k repozitory vymazány." + +#: ui/settings.py:185 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Opravdu chcete vymazat zprávy?" + +#: ui/settings.py:192 +msgid "Previous messages cleared" +msgstr "Zprávy vymazány." + +#: ui/settings.py:196 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Opravdu chcete vymazat vaše autentikační údaje?" + +#: ui/settings.py:213 +msgid "Authentication information cleared" +msgstr "Autentikační údaje vymazány." + +#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 +msgid "Cleanup" +msgstr "Vyčistit" + +#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Čistím" + +#: ui/cleanup.py:57 +msgid "Completed Cleanup" +msgstr "Čištění dokončeno" + +#: ui/relocate.py:76 +msgid "The from and to url fields are both required." +msgstr "Políčka z a url jsou povinná" + +#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Přesunutí" + +#: ui/relocate.py:87 +msgid "Running Relocate Command..." +msgstr "Spouštím příkaz Přesunutí" + +#: ui/relocate.py:94 +msgid "Completed Relocate" +msgstr "Přesunutí dokončeno" + +#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 +#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 +msgid "Path" +msgstr "Cesta" + +#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 +#: ui/revert.py:55 +msgid "Extension" +msgstr "" + +#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 +#: ui/glade/log.glade.h:6 +msgid "Loading..." +msgstr "Nahrávám..." + +#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 +#, python-format +msgid "Found %d item(s)" +msgstr "Našel %d položek" + +#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 +#: lib/extensions/nautilus/RabbitVCS.py:638 +msgid "Add" +msgstr "Přidat" + +#: ui/add.py:116 +msgid "Running Add Command..." +msgstr "" + +#: ui/add.py:118 +msgid "Completed Add" +msgstr "Přidání dokončeno" + +#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 +msgid "Open" +msgstr "Otevřít" + +#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 +msgid "Browse to" +msgstr "Procházet" + +#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 +#: lib/extensions/nautilus/RabbitVCS.py:735 +msgid "Delete" +msgstr "Smazat" + +#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 +msgid "Add to ignore list" +msgstr "Přídat na ignore list" + +#: ui/import.py:41 +#, python-format +msgid "Import - %s" +msgstr "Importovat - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:80 ui/glade/import.glade.h:3 +#: lib/extensions/nautilus/RabbitVCS.py:888 +msgid "Import" +msgstr "Import" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "" + +#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 +msgid "Locked" +msgstr "Zamčeno" + +#: ui/lock.py:90 ui/lock.py:107 +msgid "Yes" +msgstr "Ano" + +#: ui/lock.py:144 +msgid "Get Lock" +msgstr "" + +#: ui/lock.py:145 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:154 +msgid "Completed Lock" +msgstr "" + +#: ui/lock.py:176 +msgid "Remove Lock" +msgstr "Odstranit zámek" + +#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 +msgid "View Diff" +msgstr "Zobrazit Diff" + +#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 +#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 +#: ui/glade/update.glade.h:7 +msgid "Show log" +msgstr "Zobrazit log" + +#: ui/export.py:40 +#, python-format +msgid "Export - %s" +msgstr "Exportovat - %s" + +#: ui/export.py:58 ui/checkout.py:82 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 +msgid "Export" +msgstr "Export" + +#: ui/export.py:80 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:91 +msgid "Completed Export" +msgstr "" + +#: ui/resolve.py:45 ui/resolve.py:76 +#: lib/extensions/nautilus/RabbitVCS.py:767 +msgid "Resolve" +msgstr "" + +#: ui/resolve.py:77 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:80 +msgid "Completed Resolve" +msgstr "" + +#: ui/action.py:66 ui/log.py:89 +msgid "Action" +msgstr "Akce" + +#: ui/action.py:66 +msgid "Mime Type" +msgstr "Mime Type" + +#: ui/action.py:135 +msgid "Empty Message" +msgstr "Prázdná zpráva" + +#: ui/action.py:249 ui/log.py:309 +msgid "Finished" +msgstr "Dokončeno" + +#: ui/action.py:253 +#, python-format +msgid "%s - Finished" +msgstr "%s - Dokončeno" + +#: ui/commit.py:66 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/commit.py:74 +msgid "Text Status" +msgstr "Status" + +#: ui/commit.py:74 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:188 ui/glade/commit.glade.h:4 +#: lib/extensions/nautilus/RabbitVCS.py:568 +msgid "Commit" +msgstr "Commit" + +#: ui/commit.py:189 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:195 +msgid "Completed Commit" +msgstr "" + +#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 +#: lib/extensions/nautilus/RabbitVCS.py:751 +msgid "Revert" +msgstr "" + +#: ui/commit.py:289 +msgid "Restore" +msgstr "Obnovit" + +#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 +msgid "Message" +msgstr "Zpráva" + +#: ui/dialog.py:88 +msgid "Select a Folder" +msgstr "Zvolit adresář" + +#: ui/dialog.py:117 ui/glade/log.glade.h:12 +msgid "to" +msgstr "" + +#: ui/dialog.py:210 +msgid "Select a File" +msgstr "Zvolit soubor" + +#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 +msgid "Are you sure you want to continue?" +msgstr "Opravdu chcete pokračovat?" + +#: ui/dialog.py:257 +msgid "the selected item(s)" +msgstr "zvolené(á) položky(a)" + +#: ui/switch.py:65 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:81 ui/glade/switch.glade.h:7 +msgid "Switch" +msgstr "Switch" + +#: ui/switch.py:82 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:90 +msgid "Completed Switch" +msgstr "" + +#: ui/unlock.py:45 ui/unlock.py:109 +msgid "Unlock" +msgstr "" + +#: ui/unlock.py:110 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:113 +msgid "Completed Unlock" +msgstr "" + +#: ui/merge.py:81 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:82 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:84 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:85 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:93 +msgid "Merge" +msgstr "" + +#: ui/checkout.py:52 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 +#: lib/extensions/nautilus/RabbitVCS.py:536 +msgid "Checkout" +msgstr "" + +#: ui/checkout.py:101 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/checkout.py:111 +msgid "Completed Checkout" +msgstr "" + +#: ui/log.py:63 +#, python-format +msgid "Log - %s" +msgstr "Log - %s" + +#: ui/log.py:90 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:90 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:112 +msgid "Cancelled" +msgstr "Zrušeno" + +#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 +msgid "N/A" +msgstr "N/A" + +#: ui/log.py:284 +msgid "(no author)" +msgstr "(autor neznámý)" + +#: ui/log.py:313 +msgid "Retrieving Log Information..." +msgstr "" + +#: ui/properties.py:53 +#, python-format +msgid "Properties - %s" +msgstr "Vlastnosti - %s" + +#: ui/properties.py:61 +msgid "Name" +msgstr "Jméno" + +#: ui/properties.py:61 +msgid "Value" +msgstr "Hodnota" + +#: ui/revert.py:76 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:78 +msgid "Completed Revert" +msgstr "" + +#: ui/update.py:53 ui/glade/update.glade.h:8 +#: lib/extensions/nautilus/RabbitVCS.py:552 +msgid "Update" +msgstr "Update" + +#: ui/create.py:49 +msgid "Repository successfully created" +msgstr "Repozitory bylo úspěšně vytvořeno" + +#: ui/create.py:51 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 +#: ui/glade/update.glade.h:1 +msgid "Revision" +msgstr "Revize" + +#: ui/glade/switch.glade.h:2 +msgid "Switch Details" +msgstr "" + +#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Od:" + +#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 +#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 +msgid "HEAD" +msgstr "HEAD" + +#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Do:" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "" + +#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 +msgid "Add Message" +msgstr "Přidat zprávu" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to see diff)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Commit do:" + +#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 +#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Předchozí zprávy" + +#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 +msgid "Select / Deselect all" +msgstr "Vybrat / zrušit vše" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Soubory k uzamknutí" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Vlastnosti pro:" + +#: ui/glade/properties.glade.h:3 +msgid "Edit..." +msgstr "Upravit..." + +#: ui/glade/properties.glade.h:4 +msgid "New..." +msgstr "Nový..." + +#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 +msgid "Properties" +msgstr "Vlastnosti" + +#: ui/glade/properties.glade.h:6 +msgid "URL/Path:" +msgstr "URL/cesta:" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Odkazy" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Informace o verzi" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 +msgid "About" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autoři:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Děkujeme:" + +#: ui/glade/rename.glade.h:1 +msgid "New Name:" +msgstr "Nové jméno:" + +#: ui/glade/branch.glade.h:2 +msgid "Create copy from" +msgstr "" + +#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Repozitory" + +#: ui/glade/branch.glade.h:5 +msgid "Copy from HEAD" +msgstr "" + +#: ui/glade/branch.glade.h:6 +msgid "Copy from revision" +msgstr "" + +#: ui/glade/branch.glade.h:7 +msgid "Copy from working copy" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s)" +msgstr "" + +#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 +msgid "Message" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limit:" + +#: ui/glade/log.glade.h:7 +msgid "Log" +msgstr "Log" + +#: ui/glade/log.glade.h:9 +msgid "Refresh" +msgstr "Obnovit" + +#: ui/glade/log.glade.h:10 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:11 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Z URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 +msgid "Options" +msgstr "Volby" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 +#: ui/glade/update.glade.h:5 +msgid "Recursive" +msgstr "" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "" + +#: ui/glade/settings.glade.h:2 +msgid "Log Messages" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Program used to browse repositories" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 +msgid "Browse..." +msgstr "Procházet..." + +#: ui/glade/settings.glade.h:9 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:11 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:13 +msgid "External Programs" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "General" +msgstr "Obecné" + +#: ui/glade/settings.glade.h:15 +msgid "Language:" +msgstr "Jazyk:" + +#: ui/glade/settings.glade.h:16 +msgid "Logging" +msgstr "Logování" + +#: ui/glade/settings.glade.h:17 +msgid "Minimum level to log" +msgstr "Minimální úroveň pro logování" + +#: ui/glade/settings.glade.h:18 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:19 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Saved Data" +msgstr "Uložená data" + +#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 +msgid "Settings" +msgstr "Nastavení" + +#: ui/glade/settings.glade.h:22 +msgid "Show new version on the right side" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Type:" +msgstr "Typ" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/dialogs.glade.h:1 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Previous Messages" +msgstr "Předchozí zprávy" + +#: ui/glade/dialogs.glade.h:7 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "Opravdu chcete smazat %item%?" + +#: ui/glade/dialogs.glade.h:8 +msgid "Accept Forever" +msgstr "Přijmout natrvalo" + +#: ui/glade/dialogs.glade.h:9 +msgid "Accept Once" +msgstr "Přijmout jednou" + +#: ui/glade/dialogs.glade.h:11 +msgid "Authentication" +msgstr "Authentikace" + +#: ui/glade/dialogs.glade.h:12 +msgid "Check Certificate" +msgstr "Kontrola certifikátu" + +#: ui/glade/dialogs.glade.h:13 +msgid "Confirmation" +msgstr "Potvrzení" + +#: ui/glade/dialogs.glade.h:14 +msgid "Delete Confirmation" +msgstr "Smazat potvrzení" + +#: ui/glade/dialogs.glade.h:15 +msgid "Deny" +msgstr "Zakázané" + +#: ui/glade/dialogs.glade.h:16 +msgid "Fingerprint:" +msgstr "Fingerprint:" + +#: ui/glade/dialogs.glade.h:17 +msgid "Host:" +msgstr "Host" + +#: ui/glade/dialogs.glade.h:18 +msgid "Issuer:" +msgstr "Vydavatel:" + +#: ui/glade/dialogs.glade.h:19 +msgid "Login:" +msgstr "Jméno:" + +#: ui/glade/dialogs.glade.h:21 +msgid "Password:" +msgstr "Heslo:" + +#: ui/glade/dialogs.glade.h:23 +msgid "Property" +msgstr "Vlastnost" + +#: ui/glade/dialogs.glade.h:24 +msgid "Property:" +msgstr "Vlastnost:" + +#: ui/glade/dialogs.glade.h:25 +msgid "Realm:" +msgstr "Realm" + +#: ui/glade/dialogs.glade.h:26 +msgid "Save Authentication" +msgstr "Uložit autentikaci" + +#: ui/glade/dialogs.glade.h:27 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:28 +msgid "Valid:" +msgstr "Platné:" + +#: ui/glade/dialogs.glade.h:29 +msgid "Value:" +msgstr "Hodnota:" + +#: ui/glade/checkout.glade.h:6 +msgid "Destination:" +msgstr "" + +#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/checkout.glade.h:12 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Update Depth" +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:362 +msgid "Debug" +msgstr "Debug:" + +#: lib/extensions/nautilus/RabbitVCS.py:375 +msgid "DBus" +msgstr "DBus:" + +#: lib/extensions/nautilus/RabbitVCS.py:388 +msgid "Start/Restart Service" +msgstr "Start/Restart Service" + +#: lib/extensions/nautilus/RabbitVCS.py:404 +msgid "Exit Service" +msgstr "Exit Service" + +#: lib/extensions/nautilus/RabbitVCS.py:422 +msgid "Bugs" +msgstr "Bugy" + +#: lib/extensions/nautilus/RabbitVCS.py:435 +msgid "Test Asynchronicity" +msgstr "Test Asynchronicity" + +#: lib/extensions/nautilus/RabbitVCS.py:453 +msgid "Open Shell" +msgstr "Otevřít shell" + +#: lib/extensions/nautilus/RabbitVCS.py:469 +msgid "Refresh Status" +msgstr "Obnovit status" + +#: lib/extensions/nautilus/RabbitVCS.py:486 +msgid "Debug Revert" +msgstr "Debug Revert" + +#: lib/extensions/nautilus/RabbitVCS.py:487 +msgid "Reverts everything it sees" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:502 +msgid "Invalidate" +msgstr "Nevalidní" + +#: lib/extensions/nautilus/RabbitVCS.py:503 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:518 +msgid "Add Emblem" +msgstr "Přidat emblem" + +#: lib/extensions/nautilus/RabbitVCS.py:519 +msgid "Add an emblem" +msgstr "Přidat emblem" + +#: lib/extensions/nautilus/RabbitVCS.py:537 +msgid "Check out a working copy" +msgstr "Check out pracovní kopie" + +#: lib/extensions/nautilus/RabbitVCS.py:553 +msgid "Update a working copy" +msgstr "Update pracovní kopie" + +#: lib/extensions/nautilus/RabbitVCS.py:569 +msgid "Commit modifications to the repository" +msgstr "Commit změn do repozitory" + +#: lib/extensions/nautilus/RabbitVCS.py:584 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: lib/extensions/nautilus/RabbitVCS.py:598 +msgid "View the modifications made to a file" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:613 +msgid "Show Log" +msgstr "Zobrazit log" + +#: lib/extensions/nautilus/RabbitVCS.py:614 +msgid "Show a file's log information" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:639 +msgid "Schedule an item to be added to the repository" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:663 +msgid "Ignore an item" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:678 +msgid "Ignore all files with this extension" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:703 +msgid "Update to revision..." +msgstr "Update na revizi..." + +#: lib/extensions/nautilus/RabbitVCS.py:704 +msgid "Update a file to a specific revision" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:719 +msgid "Rename..." +msgstr "Přejmenovat" + +#: lib/extensions/nautilus/RabbitVCS.py:720 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:736 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:752 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:768 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:783 +msgid "Relocate..." +msgstr "Relocate..." + +#: lib/extensions/nautilus/RabbitVCS.py:784 +msgid "Relocate your working copy" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:799 +msgid "Get Lock..." +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:800 +msgid "Locally lock items" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:815 +msgid "Release Lock..." +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:816 +msgid "Release lock on an item" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:832 +msgid "Clean up working copy" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:857 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:872 +msgid "Create Repository here" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:873 +msgid "Create a repository in a folder" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:889 +msgid "Import an item into a repository" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:913 +msgid "Branch/tag..." +msgstr "Branch/tag" + +#: lib/extensions/nautilus/RabbitVCS.py:914 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:929 +msgid "Switch..." +msgstr "Switch..." + +#: lib/extensions/nautilus/RabbitVCS.py:930 +msgid "Change the repository location of a working copy" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:945 +msgid "Merge..." +msgstr "Merge..." + +#: lib/extensions/nautilus/RabbitVCS.py:946 +msgid "A wizard with steps for merging" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:970 +msgid "Annotate..." +msgstr "Anotace..." + +#: lib/extensions/nautilus/RabbitVCS.py:971 +msgid "Annotate a file" +msgstr "Anotace souboru" + +#: lib/extensions/nautilus/RabbitVCS.py:996 +msgid "View the properties of an item" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:1027 +msgid "Help" +msgstr "Help" + +#: lib/extensions/nautilus/RabbitVCS.py:1028 +msgid "View help" +msgstr "Zobrazit nápovědu" + +#: lib/extensions/nautilus/RabbitVCS.py:1044 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:1060 +msgid "About RabbitVCS" +msgstr "" + +#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 +#: lib/vcs/svn/__init__.py:127 +msgid "Added" +msgstr "" + +#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 +msgid "Copied" +msgstr "" + +#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 +msgid "Deleted" +msgstr "" + +#: lib/vcs/svn/__init__.py:114 +msgid "Restored" +msgstr "" + +#: lib/vcs/svn/__init__.py:115 +msgid "Reverted" +msgstr "" + +#: lib/vcs/svn/__init__.py:116 +msgid "Failed Revert" +msgstr "" + +#: lib/vcs/svn/__init__.py:117 +msgid "Resolved" +msgstr "" + +#: lib/vcs/svn/__init__.py:118 +msgid "Skipped" +msgstr "Přeskočeno" + +#: lib/vcs/svn/__init__.py:121 +msgid "Updated" +msgstr "Aktualizováno" + +#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 +msgid "External" +msgstr "Externí" + +#: lib/vcs/svn/__init__.py:126 +msgid "Modified" +msgstr "Modifikováno" + +#: lib/vcs/svn/__init__.py:129 +msgid "Replaced" +msgstr "Přepsáno" + +#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 +msgid "Changed" +msgstr "Změněno" + +#: lib/vcs/svn/__init__.py:131 +msgid "Annotated" +msgstr "Anotováno" + +#: lib/vcs/svn/__init__.py:133 +msgid "Unlocked" +msgstr "Odemčeno" + +#: lib/vcs/svn/__init__.py:134 +msgid "Failed Lock" +msgstr "Zámek selhal" + +#: lib/vcs/svn/__init__.py:135 +msgid "Failed Unlock" +msgstr "Odemčení selhalo" + +#: lib/vcs/svn/__init__.py:144 +msgid "Inapplicable" +msgstr "" + +#: lib/vcs/svn/__init__.py:145 +msgid "Unknown" +msgstr "Neznámé" + +#: lib/vcs/svn/__init__.py:146 +msgid "Unchanged" +msgstr "" + +#: lib/vcs/svn/__init__.py:147 +msgid "Missing" +msgstr "Chybějící" + +#: lib/vcs/svn/__init__.py:148 +msgid "Obstructed" +msgstr "" + +#: lib/vcs/svn/__init__.py:150 +msgid "Merged" +msgstr "Spojeno" + +#: lib/vcs/svn/__init__.py:151 +msgid "Conflicted" +msgstr "" diff -Nru rabbitvcs-0.13.1/po/de.po rabbitvcs-0.15.0.5/po/de.po --- rabbitvcs-0.13.1/po/de.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/de.po 2009-09-28 11:22:01.000000000 +0000 @@ -0,0 +1,1358 @@ +# German translations for PACKAGE package. +# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Marcel Stimberg , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: neu\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-03-04 14:35-0500\n" +"PO-Revision-Date: 2009-03-19 09:59+0000\n" +"Last-Translator: Steve Markgraf \n" +"Language-Team: German <>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" +"X-Generator: Launchpad (build Unknown)\n" +"X-Poedit-Basepath: ../\n" + +#: ui/branch.py:71 +msgid "" +"There have been modifications to your working copy. If you copy from the " +"HEAD revision you will lose your changes." +msgstr "" +"Ihre Arbeitskopie wurde verändert. Wenn Sie von der HEAD-Revision kopieren, " +"gehen diese Änderungen verloren." + +#: ui/branch.py:89 +msgid "You must supply a destination path." +msgstr "Sie müssen einen Zielpfad angeben." + +#: ui/branch.py:99 +msgid "The from revision field is required." +msgstr "Sie müssen die Ausgangsrevision angeben." + +#: ui/branch.py:108 +msgid "Invalid revision information" +msgstr "Ungültige Revisionsinformation" + +#: ui/branch.py:123 ui/glade/branch.glade.h:4 +msgid "Branch/tag" +msgstr "Zweig/Tag" + +#: ui/branch.py:124 +msgid "Running Branch/tag Command..." +msgstr "Erstelle Zweig/Tag..." + +#: ui/branch.py:126 +msgid "Completed Branch/tag" +msgstr "Zweig/Tag-Erstellung abgeschlossen" + +#: ui/updateto.py:70 +msgid "Update To Revision" +msgstr "Aktualisiere auf Revision" + +#: ui/updateto.py:71 ui/update.py:54 +msgid "Updating..." +msgstr "Aktualisiere..." + +#: ui/updateto.py:79 ui/update.py:57 +msgid "Completed Update" +msgstr "Aktualisierung abgeschlossen." + +#: ui/rename.py:59 +msgid "The new name field is required" +msgstr "Der neue Name muss angegeben werden" + +#: ui/rename.py:70 ui/glade/rename.glade.h:2 +msgid "Rename" +msgstr "Umbenennen" + +#: ui/rename.py:71 +msgid "Running Rename Command..." +msgstr "Benenne um..." + +#: ui/rename.py:78 +msgid "Completed Rename" +msgstr "Umbenennen abgeschlossen" + +#: ui/annotate.py:51 +msgid "Cannot annotate a directory" +msgstr "Kann kein Verzeichnis annotieren" + +#: ui/annotate.py:58 +#, python-format +msgid "Annotate - %s" +msgstr "Annotiere - %s" + +#: ui/annotate.py:71 +msgid "Line" +msgstr "Zeile" + +#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 +#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 +#: ui/glade/update.glade.h:6 +msgid "Revision" +msgstr "Revision" + +#: ui/annotate.py:71 ui/log.py:80 +msgid "Author" +msgstr "Autor" + +#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 +msgid "Date" +msgstr "Datum" + +#: ui/annotate.py:72 +msgid "Text" +msgstr "Text" + +#: ui/annotate.py:112 +msgid "The from revision field must be an integer" +msgstr "Die Ausgangsrevision muss eine ganze Zahl sein." + +#: ui/annotate.py:122 +msgid "Generating Annotation..." +msgstr "Erzeuge Annotationen..." + +#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 +msgid "Completed" +msgstr "Abgeschlossen" + +#: ui/settings.py:50 +msgid "English" +msgstr "englisch" + +#: ui/settings.py:156 ui/settings.py:165 +msgid "Select a program" +msgstr "Ein Programm auswählen" + +#: ui/settings.py:174 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Wollen Sie wirklich die Projektarchivpfade löschen?" + +#: ui/settings.py:181 +msgid "Repository paths cleared" +msgstr "Projektarchivpfade gelöscht" + +#: ui/settings.py:185 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Wollen Sie wirklich die früheren Nachrichten löschen?" + +#: ui/settings.py:192 +msgid "Previous messages cleared" +msgstr "Frühere Logmeldungen gelöscht" + +#: ui/settings.py:196 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Wollen Sie wirklich Ihre Authentifizierungsinformationen löschen?" + +#: ui/settings.py:213 +msgid "Authentication information cleared" +msgstr "Authentifizierungsinformationen gelöscht" + +#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 +msgid "Cleanup" +msgstr "Aufräumen" + +#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Räume auf..." + +#: ui/cleanup.py:57 +msgid "Completed Cleanup" +msgstr "Aufräumen abgeschlossen" + +#: ui/relocate.py:76 +msgid "The from and to url fields are both required." +msgstr "Die Ursprungs- und Ziel-URL müssen angegeben werden." + +#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Zweig/Tag wechseln" + +#: ui/relocate.py:87 +msgid "Running Relocate Command..." +msgstr "Stelle URL um..." + +#: ui/relocate.py:94 +msgid "Completed Relocate" +msgstr "Umstellen der URL abgeschlossen" + +#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 +#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 +msgid "Path" +msgstr "Pfad" + +#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 +#: ui/revert.py:55 +msgid "Extension" +msgstr "Erweiterung" + +#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 +#: ui/glade/log.glade.h:6 +msgid "Loading..." +msgstr "Lade..." + +#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 +#, python-format +msgid "Found %d item(s)" +msgstr "%d Objekt(e) gefunden" + +#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 +#: lib/extensions/nautilus/RabbitVCS.py:638 +msgid "Add" +msgstr "Hinzufügen" + +#: ui/add.py:116 +msgid "Running Add Command..." +msgstr "Füge hinzu..." + +#: ui/add.py:118 +msgid "Completed Add" +msgstr "Hinzufügen abgeschlossen" + +#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 +msgid "Open" +msgstr "Öffnen" + +#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 +msgid "Browse to" +msgstr "Dursuchen" + +#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 +#: lib/extensions/nautilus/RabbitVCS.py:735 +msgid "Delete" +msgstr "Löschen" + +#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 +msgid "Add to ignore list" +msgstr "Zur Liste der ignorierten Dateien hinzufügen" + +#: ui/import.py:41 +#, python-format +msgid "Import - %s" +msgstr "Import - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Die Projektarchiv-URL muss angegeben werden." + +#: ui/import.py:80 ui/glade/import.glade.h:3 +#: lib/extensions/nautilus/RabbitVCS.py:888 +msgid "Import" +msgstr "Import" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Importiere..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Import abgescholssen" + +#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 +msgid "Locked" +msgstr "Gesperrt" + +#: ui/lock.py:90 ui/lock.py:107 +msgid "Yes" +msgstr "Ja" + +#: ui/lock.py:144 +msgid "Get Lock" +msgstr "Sperren" + +#: ui/lock.py:145 +msgid "Running Lock Command..." +msgstr "Sperre..." + +#: ui/lock.py:154 +msgid "Completed Lock" +msgstr "Sperren abgeschlossen" + +#: ui/lock.py:176 +msgid "Remove Lock" +msgstr "Sperre aufheben" + +#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 +msgid "View Diff" +msgstr "Unterschiede anzeigen" + +#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 +#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 +#: ui/glade/update.glade.h:7 +msgid "Show log" +msgstr "Log anzeigen" + +#: ui/export.py:40 +#, python-format +msgid "Export - %s" +msgstr "Exportieren - %s" + +#: ui/export.py:58 ui/checkout.py:82 +msgid "The repository URL and destination path are both required fields." +msgstr "Die Projektarchiv-URL und der Zielpfad müssen angegeben werden." + +#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 +msgid "Export" +msgstr "Exportieren" + +#: ui/export.py:80 +msgid "Running Export Command..." +msgstr "Exportiere" + +#: ui/export.py:91 +msgid "Completed Export" +msgstr "Export abgeschlossen" + +#: ui/resolve.py:45 ui/resolve.py:76 +#: lib/extensions/nautilus/RabbitVCS.py:767 +msgid "Resolve" +msgstr "Auflösen" + +#: ui/resolve.py:77 +msgid "Running Resolve Command..." +msgstr "Löse Konflikte auf..." + +#: ui/resolve.py:80 +msgid "Completed Resolve" +msgstr "Auflösen abgeschlossen" + +#: ui/action.py:66 ui/log.py:89 +msgid "Action" +msgstr "Aktion" + +#: ui/action.py:66 +msgid "Mime Type" +msgstr "MIME-Typ" + +#: ui/action.py:135 +msgid "Empty Message" +msgstr "Leere Logmeldung" + +#: ui/action.py:249 ui/log.py:309 +msgid "Finished" +msgstr "Abgeschlossen" + +#: ui/action.py:253 +#, python-format +msgid "%s - Finished" +msgstr "%s - abgeschlossen" + +#: ui/commit.py:66 +msgid "The given path is not a working copy" +msgstr "Der angegebene Pfad ist keine Arbeitskopie" + +#: ui/commit.py:74 +msgid "Text Status" +msgstr "Textstatus" + +#: ui/commit.py:74 +msgid "Property Status" +msgstr "Eigenschaftenstatus" + +#: ui/commit.py:188 ui/glade/commit.glade.h:4 +#: lib/extensions/nautilus/RabbitVCS.py:568 +msgid "Commit" +msgstr "Übernehmen" + +#: ui/commit.py:189 +msgid "Running Commit Command..." +msgstr "Übernehme ins Projektarchiv..." + +#: ui/commit.py:195 +msgid "Completed Commit" +msgstr "Übernehmen abgeschlossen" + +#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 +#: lib/extensions/nautilus/RabbitVCS.py:751 +msgid "Revert" +msgstr "Rückgängig machen" + +#: ui/commit.py:289 +msgid "Restore" +msgstr "Wiederherstellen" + +#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 +msgid "Message" +msgstr "Logmeldung" + +#: ui/dialog.py:88 +msgid "Select a Folder" +msgstr "Ordner wählen" + +#: ui/dialog.py:117 ui/glade/log.glade.h:12 +msgid "to" +msgstr "bis" + +#: ui/dialog.py:210 +msgid "Select a File" +msgstr "Datei wählen" + +#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 +msgid "Are you sure you want to continue?" +msgstr "Wollen Sie wirklich fortfahren?" + +#: ui/dialog.py:257 +msgid "the selected item(s)" +msgstr "die ausgewählten Objekte" + +#: ui/switch.py:65 +msgid "The repository location is a required field." +msgstr "Der Ort des Projektarchivs muss angegeben werden." + +#: ui/switch.py:81 ui/glade/switch.glade.h:7 +msgid "Switch" +msgstr "Zweig/Tag wechseln" + +#: ui/switch.py:82 +msgid "Running Switch Command..." +msgstr "Wechsele Zweig/Tag..." + +#: ui/switch.py:90 +msgid "Completed Switch" +msgstr "Zweig/Tag gewechselt" + +#: ui/unlock.py:45 ui/unlock.py:109 +msgid "Unlock" +msgstr "Entsperren" + +#: ui/unlock.py:110 +msgid "Running Unlock Command..." +msgstr "Entsperre..." + +#: ui/unlock.py:113 +msgid "Completed Unlock" +msgstr "Entsperren abgeschlossen" + +#: ui/merge.py:81 +msgid "Running Merge Test" +msgstr "Zusammenführen testen" + +#: ui/merge.py:82 +msgid "Completed Merge Test" +msgstr "Zusammenfü" + +#: ui/merge.py:84 +msgid "Running Merge Command" +msgstr "Führe zusammen..." + +#: ui/merge.py:85 +msgid "Completed Merge" +msgstr "Zusammenführen abgeschlossen" + +#: ui/merge.py:93 +msgid "Merge" +msgstr "Zusammenführen" + +#: ui/checkout.py:52 +#, python-format +msgid "Checkout - %s" +msgstr "Auschecken - %s" + +#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 +#: lib/extensions/nautilus/RabbitVCS.py:536 +msgid "Checkout" +msgstr "Auschecken" + +#: ui/checkout.py:101 +msgid "Running Checkout Command..." +msgstr "Checke aus..." + +#: ui/checkout.py:111 +msgid "Completed Checkout" +msgstr "Auschecken beendet" + +#: ui/log.py:63 +#, python-format +msgid "Log - %s" +msgstr "Log - %s" + +#: ui/log.py:90 +msgid "Copy From Path" +msgstr "Kopiert von Pfad" + +#: ui/log.py:90 +msgid "Copy From Revision" +msgstr "Kopiert von Revision" + +#: ui/log.py:112 +msgid "Cancelled" +msgstr "Abgebrochen" + +#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 +msgid "N/A" +msgstr "n/v" + +#: ui/log.py:284 +msgid "(no author)" +msgstr "(kein Autor)" + +#: ui/log.py:313 +msgid "Retrieving Log Information..." +msgstr "Ermittle Logmeldungen..." + +#: ui/properties.py:53 +#, python-format +msgid "Properties - %s" +msgstr "Eigenschaften - %s" + +#: ui/properties.py:61 +msgid "Name" +msgstr "Name" + +#: ui/properties.py:61 +msgid "Value" +msgstr "Wert" + +#: ui/revert.py:76 +msgid "Running Revert Command..." +msgstr "Mache rückgängig..." + +#: ui/revert.py:78 +msgid "Completed Revert" +msgstr "Rückgängigmachen abgeschlossen" + +#: ui/update.py:53 ui/glade/update.glade.h:8 +#: lib/extensions/nautilus/RabbitVCS.py:552 +msgid "Update" +msgstr "Aktualisieren" + +#: ui/create.py:49 +msgid "Repository successfully created" +msgstr "Projektarchiv erfolgreich erstellt" + +#: ui/create.py:51 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Beim Erstellen des Projektarchivs ist ein Fehler aufgetreten. Stellen Sie " +"sicher, dass der angegebene Ordner leer ist." + +#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 +#: ui/glade/update.glade.h:1 +msgid "Revision" +msgstr "Revision" + +#: ui/glade/switch.glade.h:2 +msgid "Switch Details" +msgstr "Umstelldetails" + +#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Von:" + +#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 +#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 +msgid "HEAD" +msgstr "HEAD" + +#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Auf:" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Nachrichten" + +#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 +msgid "Add Message" +msgstr "Logmeldung hinzufügen" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to see diff)" +msgstr "Geänderte Dateien (Doppelklick um Unterschiede anzuzeigen)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Übernehmen nach:" + +#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 +#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Frühere Logmeldungen" + +#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 +msgid "Select / Deselect all" +msgstr "Alle aus-/abwählen" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Nicht versionierte Dateien anzeigen" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Zu sperrende Dateien" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Bitte beschreiben Sie, warum Sie diese Dateien sperren" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Dateien sperren" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Existierende Sperren brechen" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Eigenschaften für:" + +#: ui/glade/properties.glade.h:3 +msgid "Edit..." +msgstr "Bearbeiten..." + +#: ui/glade/properties.glade.h:4 +msgid "New..." +msgstr "Neu..." + +#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 +msgid "Properties" +msgstr "Eigenschaften" + +#: ui/glade/properties.glade.h:6 +msgid "URL/Path:" +msgstr "URL/Pfad:" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Von Revision" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Bis Revision" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Annotieren" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Links" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Versionsinformationen" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 +msgid "About" +msgstr "Über" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autoren:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Danksagungen:" + +#: ui/glade/rename.glade.h:1 +msgid "New Name:" +msgstr "Neuer Name:" + +#: ui/glade/branch.glade.h:2 +msgid "Create copy from" +msgstr "Kopie erstellen von" + +#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Projektarchiv" + +#: ui/glade/branch.glade.h:5 +msgid "Copy from HEAD" +msgstr "Kopie von HEAD" + +#: ui/glade/branch.glade.h:6 +msgid "Copy from revision" +msgstr "Kopie von Revision" + +#: ui/glade/branch.glade.h:7 +msgid "Copy from working copy" +msgstr "Kopie von Arbeitskopie" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s)" +msgstr "Betroffene Datei(en)" + +#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 +msgid "Message" +msgstr "Logmeldung" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Revisionen" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limit:" + +#: ui/glade/log.glade.h:7 +msgid "Log" +msgstr "Log" + +#: ui/glade/log.glade.h:9 +msgid "Refresh" +msgstr "Aktualisieren" + +#: ui/glade/log.glade.h:10 +msgid "Showing Revisions:" +msgstr "Zeige Revisionen:" + +#: ui/glade/log.glade.h:11 +msgid "Stop on copy" +msgstr "Bei Kopie anhalten" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Quell-URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Von: (URL und zusammenzuführende Revision)" + +#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 +msgid "Options" +msgstr "Optionen" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Revisionsbereich" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Nach: (URL und zusammenzuführende Revision)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL von der zusammengeführt werden soll" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Arbeitskopie" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Wählen Sie diese Methode, wenn Sie Änderungen an einem Zweig vorgenommen " +"haben und Ihre Änderungen mit einem anderen Zweig zusammenführen möchten." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Wählen Sie diese Methode, wenn Sie zwei verschiedene Zweige in Ihre " +"Arbeitskopie zusammenführen möchten." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Abstammung ignorieren" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Zusammenführassistent" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Einen Revisionsbereich zusammenführen" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Zwei verschiedene Bäume zusammenführen" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Nur als zusammengeführt markieren" + +#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 +#: ui/glade/update.glade.h:5 +msgid "Recursive" +msgstr "Rekursiv" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Zusammenführen testen" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Benutzen Sie den Log-Dialog, um die Revisionen zum Zusammenführen " +"auszuwählen. Oder geben Sie die Revisionen per Hand an, durch Komma " +"getrennt. Sie können einen Revisionsbereich mit dem Bindestrich angeben.\n" +"\n" +"Beispiel: 4-7, 9,11,15-HEAD\n" +"\n" +"Lassen Sie das Feld leer, um alle Revisionen zusammenzuführen." + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Authentifizierung" + +#: ui/glade/settings.glade.h:2 +msgid "Log Messages" +msgstr "Logmeldungen" + +#: ui/glade/settings.glade.h:3 +msgid "Logging Options" +msgstr "Logging-Optionen" + +#: ui/glade/settings.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:5 +msgid "Program used to browse repositories" +msgstr "Programm zum Durchsuchen von Projektarchiven" + +#: ui/glade/settings.glade.h:6 +msgid "Program used to compare files" +msgstr "Programm zum Dateivergleich" + +#: ui/glade/settings.glade.h:7 +msgid "URL History" +msgstr "URL-Historie" + +#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 +msgid "Browse..." +msgstr "Durchsuchen..." + +#: ui/glade/settings.glade.h:9 +msgid "Clear your authentication information" +msgstr "Ihre Anmeldeinformationen löschen" + +#: ui/glade/settings.glade.h:10 +msgid "Enable emblems" +msgstr "Embleme einschalten" + +#: ui/glade/settings.glade.h:11 +msgid "Enable file attributes" +msgstr "Dateiattribute einschalten" + +#: ui/glade/settings.glade.h:12 +msgid "Enable recursive status checks" +msgstr "Rekursive Statusüberprüfungen aktivieren" + +#: ui/glade/settings.glade.h:13 +msgid "External Programs" +msgstr "Externe Programme" + +#: ui/glade/settings.glade.h:14 +msgid "General" +msgstr "Allgemein" + +#: ui/glade/settings.glade.h:15 +msgid "Language:" +msgstr "Sprache:" + +#: ui/glade/settings.glade.h:16 +msgid "Logging" +msgstr "Logging" + +#: ui/glade/settings.glade.h:17 +msgid "Minimum level to log" +msgstr "Minimaler Loglevel" + +#: ui/glade/settings.glade.h:18 +msgid "Number of URLs to remember" +msgstr "Zahl der zu merkenden URLs" + +#: ui/glade/settings.glade.h:19 +msgid "Number of messages to remember" +msgstr "Zahl der zu merkenden Logmeldungen" + +#: ui/glade/settings.glade.h:20 +msgid "Saved Data" +msgstr "Gespeicherte Daten" + +#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 +msgid "Settings" +msgstr "Einstellungen" + +#: ui/glade/settings.glade.h:22 +msgid "Show new version on the right side" +msgstr "Neue Version auf der rechten Seite zeigen" + +#: ui/glade/settings.glade.h:23 +msgid "Type:" +msgstr "Typ:" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Aufräumen angefragt...\n" +"\n" +"Aufräumen der Arbeitskopie beginnen?" + +#: ui/glade/dialogs.glade.h:1 +msgid "Certificate Details" +msgstr "Zertifikatsdetails" + +#: ui/glade/dialogs.glade.h:2 +msgid "Edit Property Details" +msgstr "Eigenschaftsdetails bearbeiten" + +#: ui/glade/dialogs.glade.h:4 +msgid "Please add your authentication details" +msgstr "Bitte geben Sie Ihre Authentifizierungsinformationen an" + +#: ui/glade/dialogs.glade.h:5 +msgid "Previous Messages" +msgstr "Frühere Logmeldungen" + +#: ui/glade/dialogs.glade.h:7 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Wollen Sie wirklich %item% löschen?" + +#: ui/glade/dialogs.glade.h:8 +msgid "Accept Forever" +msgstr "Dauerhaft akzeptieren" + +#: ui/glade/dialogs.glade.h:9 +msgid "Accept Once" +msgstr "Einmal akzeptieren" + +#: ui/glade/dialogs.glade.h:11 +msgid "Authentication" +msgstr "Anmeldung" + +#: ui/glade/dialogs.glade.h:12 +msgid "Check Certificate" +msgstr "Zertifikat prüfen" + +#: ui/glade/dialogs.glade.h:13 +msgid "Confirmation" +msgstr "Bestätigung" + +#: ui/glade/dialogs.glade.h:14 +msgid "Delete Confirmation" +msgstr "Bestätigung zum Löschen" + +#: ui/glade/dialogs.glade.h:15 +msgid "Deny" +msgstr "Verweigern" + +#: ui/glade/dialogs.glade.h:16 +msgid "Fingerprint:" +msgstr "Fingerabdruck:" + +#: ui/glade/dialogs.glade.h:17 +msgid "Host:" +msgstr "Server:" + +#: ui/glade/dialogs.glade.h:18 +msgid "Issuer:" +msgstr "Aussteller:" + +#: ui/glade/dialogs.glade.h:19 +msgid "Login:" +msgstr "Benutzername:" + +#: ui/glade/dialogs.glade.h:21 +msgid "Password:" +msgstr "Passwort:" + +#: ui/glade/dialogs.glade.h:23 +msgid "Property" +msgstr "Eigenschaft" + +#: ui/glade/dialogs.glade.h:24 +msgid "Property:" +msgstr "Eigenschaft:" + +#: ui/glade/dialogs.glade.h:25 +msgid "Realm:" +msgstr "Bereich:" + +#: ui/glade/dialogs.glade.h:26 +msgid "Save Authentication" +msgstr "Anmeldeinformationen speichern" + +#: ui/glade/dialogs.glade.h:27 +msgid "The item(s) will be sent to the trash can." +msgstr "Das Objekt/Die Objekte werden in den Mülleimer verschoben." + +#: ui/glade/dialogs.glade.h:28 +msgid "Valid:" +msgstr "Gültig:" + +#: ui/glade/dialogs.glade.h:29 +msgid "Value:" +msgstr "Wert:" + +#: ui/glade/checkout.glade.h:6 +msgid "Destination:" +msgstr "Zielort:" + +#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 +msgid "Omit Externals" +msgstr "Ignoriere Externe Links" + +#: ui/glade/checkout.glade.h:12 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Import-Logmeldung" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Ignorierte Dateien einbeziehen" + +#: ui/glade/update.glade.h:2 +msgid "Update Depth" +msgstr "Aktualisierungstiefe" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Das Projektarchiv der Arbeitskopie ändern" + +#: lib/extensions/nautilus/RabbitVCS.py:362 +msgid "Debug" +msgstr "Debug" + +#: lib/extensions/nautilus/RabbitVCS.py:375 +msgid "DBus" +msgstr "DBus" + +#: lib/extensions/nautilus/RabbitVCS.py:388 +msgid "Start/Restart Service" +msgstr "Start/Restart Service" + +#: lib/extensions/nautilus/RabbitVCS.py:404 +msgid "Exit Service" +msgstr "Exit Service" + +#: lib/extensions/nautilus/RabbitVCS.py:422 +msgid "Bugs" +msgstr "Bugs" + +#: lib/extensions/nautilus/RabbitVCS.py:435 +msgid "Test Asynchronicity" +msgstr "Test Asynchronicity" + +#: lib/extensions/nautilus/RabbitVCS.py:453 +msgid "Open Shell" +msgstr "Open Shell" + +#: lib/extensions/nautilus/RabbitVCS.py:469 +msgid "Refresh Status" +msgstr "Refresh Status" + +#: lib/extensions/nautilus/RabbitVCS.py:486 +msgid "Debug Revert" +msgstr "Debug Revert" + +#: lib/extensions/nautilus/RabbitVCS.py:487 +msgid "Reverts everything it sees" +msgstr "Reverts everything it sees" + +#: lib/extensions/nautilus/RabbitVCS.py:502 +msgid "Invalidate" +msgstr "Ungültig machen" + +#: lib/extensions/nautilus/RabbitVCS.py:503 +msgid "Force an invalidate_extension_info() call" +msgstr "Einen Aufruf von invalidate_extension_info() forcieren" + +#: lib/extensions/nautilus/RabbitVCS.py:518 +msgid "Add Emblem" +msgstr "Emblem hinzufügen" + +#: lib/extensions/nautilus/RabbitVCS.py:519 +msgid "Add an emblem" +msgstr "Ein Emblem hinzufügen" + +#: lib/extensions/nautilus/RabbitVCS.py:537 +msgid "Check out a working copy" +msgstr "Eine Arbeitskopie auschecken" + +#: lib/extensions/nautilus/RabbitVCS.py:553 +msgid "Update a working copy" +msgstr "Eine Arbeitskopie aktualisieren" + +#: lib/extensions/nautilus/RabbitVCS.py:569 +msgid "Commit modifications to the repository" +msgstr "Änderungen in das Projektarchiv übertragen" + +#: lib/extensions/nautilus/RabbitVCS.py:584 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: lib/extensions/nautilus/RabbitVCS.py:598 +msgid "View the modifications made to a file" +msgstr "Die an einer Datei vorgenommen Änderung ansehen" + +#: lib/extensions/nautilus/RabbitVCS.py:613 +msgid "Show Log" +msgstr "Log anzeigen" + +#: lib/extensions/nautilus/RabbitVCS.py:614 +msgid "Show a file's log information" +msgstr "Logmeldungen einer Datei zeigen" + +#: lib/extensions/nautilus/RabbitVCS.py:639 +msgid "Schedule an item to be added to the repository" +msgstr "Ein Objekt zum Hinzufügen zum Projektarchiv vormerken" + +#: lib/extensions/nautilus/RabbitVCS.py:663 +msgid "Ignore an item" +msgstr "Ein Objekt ignorieren" + +#: lib/extensions/nautilus/RabbitVCS.py:678 +msgid "Ignore all files with this extension" +msgstr "Alle Dateien mit dieser Erweiterung ignorieren" + +#: lib/extensions/nautilus/RabbitVCS.py:703 +msgid "Update to revision..." +msgstr "Aktualisieren auf..." + +#: lib/extensions/nautilus/RabbitVCS.py:704 +msgid "Update a file to a specific revision" +msgstr "Eine Datei auf eine bestimmte Revision aktualisieren" + +#: lib/extensions/nautilus/RabbitVCS.py:719 +msgid "Rename..." +msgstr "Umbenennen..." + +#: lib/extensions/nautilus/RabbitVCS.py:720 +msgid "Schedule an item to be renamed on the repository" +msgstr "Ein Objekt zum Umbenennen im Projektarchiv vormerken" + +#: lib/extensions/nautilus/RabbitVCS.py:736 +msgid "Schedule an item to be deleted from the repository" +msgstr "Ein Objekt zum Löschen aus dem Projektarchiv vomerken" + +#: lib/extensions/nautilus/RabbitVCS.py:752 +msgid "Revert an item to its unmodified state" +msgstr "Ein Objekt in seinen unveränderten Zustand rückversetzen" + +#: lib/extensions/nautilus/RabbitVCS.py:768 +msgid "Mark a conflicted item as resolved" +msgstr "Ein in Konflikt stehendes Objekt als gelöst markieren" + +#: lib/extensions/nautilus/RabbitVCS.py:783 +msgid "Relocate..." +msgstr "URL umstellen" + +#: lib/extensions/nautilus/RabbitVCS.py:784 +msgid "Relocate your working copy" +msgstr "URL des Projektarchivs umstellen" + +#: lib/extensions/nautilus/RabbitVCS.py:799 +msgid "Get Lock..." +msgstr "Sperren..." + +#: lib/extensions/nautilus/RabbitVCS.py:800 +msgid "Locally lock items" +msgstr "Objekte lokal sperren" + +#: lib/extensions/nautilus/RabbitVCS.py:815 +msgid "Release Lock..." +msgstr "Sperre aufheben..." + +#: lib/extensions/nautilus/RabbitVCS.py:816 +msgid "Release lock on an item" +msgstr "Sperre für Objekte aufheben" + +#: lib/extensions/nautilus/RabbitVCS.py:832 +msgid "Clean up working copy" +msgstr "Arbeitskopie aufräumen" + +#: lib/extensions/nautilus/RabbitVCS.py:857 +msgid "Export a working copy or repository with no versioning information" +msgstr "" +"Eine Arbeitskopie oder ein Projektarchiv ohne Versionsinformationen " +"exportieren" + +#: lib/extensions/nautilus/RabbitVCS.py:872 +msgid "Create Repository here" +msgstr "Projektarchiv hier erstellen" + +#: lib/extensions/nautilus/RabbitVCS.py:873 +msgid "Create a repository in a folder" +msgstr "Ein Projektarchiv in einem Ordner erstellen" + +#: lib/extensions/nautilus/RabbitVCS.py:889 +msgid "Import an item into a repository" +msgstr "Ein Objekt in ein Projektarchiv importieren" + +#: lib/extensions/nautilus/RabbitVCS.py:913 +msgid "Branch/tag..." +msgstr "Zweig/Tag..." + +#: lib/extensions/nautilus/RabbitVCS.py:914 +msgid "Copy an item to another location in the repository" +msgstr "Ein Objekt zu einem anderen Ort im Projektarchiv kopieren" + +#: lib/extensions/nautilus/RabbitVCS.py:929 +msgid "Switch..." +msgstr "Zweig/Tag wechseln..." + +#: lib/extensions/nautilus/RabbitVCS.py:930 +msgid "Change the repository location of a working copy" +msgstr "Den Ort des Projektarchivs für eine Arbeitskopie umstellen" + +#: lib/extensions/nautilus/RabbitVCS.py:945 +msgid "Merge..." +msgstr "Zusammenführen..." + +#: lib/extensions/nautilus/RabbitVCS.py:946 +msgid "A wizard with steps for merging" +msgstr "Ein Assistent zum Zusammenführen" + +#: lib/extensions/nautilus/RabbitVCS.py:970 +msgid "Annotate..." +msgstr "Annotieren" + +#: lib/extensions/nautilus/RabbitVCS.py:971 +msgid "Annotate a file" +msgstr "Autoren- und Revisionsinformationen zu einer Datei anzeigen" + +#: lib/extensions/nautilus/RabbitVCS.py:996 +msgid "View the properties of an item" +msgstr "Die Eigenschaften eines Objekts ansehen" + +#: lib/extensions/nautilus/RabbitVCS.py:1027 +msgid "Help" +msgstr "Hilfe" + +#: lib/extensions/nautilus/RabbitVCS.py:1028 +msgid "View help" +msgstr "Hilfe ansehen" + +#: lib/extensions/nautilus/RabbitVCS.py:1044 +msgid "View or change RabbitVCS settings" +msgstr "Einstellungen von RabbitVCS sehen oder bearbeiten" + +#: lib/extensions/nautilus/RabbitVCS.py:1060 +msgid "About RabbitVCS" +msgstr "Über RabbitVCS" + +#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 +#: lib/vcs/svn/__init__.py:127 +msgid "Added" +msgstr "Hinzugefügt" + +#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 +msgid "Copied" +msgstr "Kopiert" + +#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 +msgid "Deleted" +msgstr "Gelöscht" + +#: lib/vcs/svn/__init__.py:114 +msgid "Restored" +msgstr "Wiederhergestellt" + +#: lib/vcs/svn/__init__.py:115 +msgid "Reverted" +msgstr "Rückgängig gemacht" + +#: lib/vcs/svn/__init__.py:116 +msgid "Failed Revert" +msgstr "Rückgängig machen fehlgeschlagen" + +#: lib/vcs/svn/__init__.py:117 +msgid "Resolved" +msgstr "Aufgelöst" + +#: lib/vcs/svn/__init__.py:118 +msgid "Skipped" +msgstr "Übersprungen" + +#: lib/vcs/svn/__init__.py:121 +msgid "Updated" +msgstr "Aktualisiert" + +#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 +msgid "External" +msgstr "Extern" + +#: lib/vcs/svn/__init__.py:126 +msgid "Modified" +msgstr "Geändert" + +#: lib/vcs/svn/__init__.py:129 +msgid "Replaced" +msgstr "Ersetzt" + +#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 +msgid "Changed" +msgstr "Geändert" + +#: lib/vcs/svn/__init__.py:131 +msgid "Annotated" +msgstr "Annotiert" + +#: lib/vcs/svn/__init__.py:133 +msgid "Unlocked" +msgstr "Entsperrt" + +#: lib/vcs/svn/__init__.py:134 +msgid "Failed Lock" +msgstr "Sperren fehlgeschlagen" + +#: lib/vcs/svn/__init__.py:135 +msgid "Failed Unlock" +msgstr "Entsperren fehlgeschlagen" + +#: lib/vcs/svn/__init__.py:144 +msgid "Inapplicable" +msgstr "Nicht anwendbar" + +#: lib/vcs/svn/__init__.py:145 +msgid "Unknown" +msgstr "Unbekannt" + +#: lib/vcs/svn/__init__.py:146 +msgid "Unchanged" +msgstr "Unverändert" + +#: lib/vcs/svn/__init__.py:147 +msgid "Missing" +msgstr "Fehlend" + +#: lib/vcs/svn/__init__.py:148 +msgid "Obstructed" +msgstr "Verhindert" + +#: lib/vcs/svn/__init__.py:150 +msgid "Merged" +msgstr "Zusammengeführt" + +#: lib/vcs/svn/__init__.py:151 +msgid "Conflicted" +msgstr "Im Konflikt" diff -Nru rabbitvcs-0.13.1/po/es_CL.po rabbitvcs-0.15.0.5/po/es_CL.po --- rabbitvcs-0.13.1/po/es_CL.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/es_CL.po 2009-09-28 11:22:01.000000000 +0000 @@ -0,0 +1,1423 @@ +# Spanish translations for PACKAGE package +# Traducciones al español para el paquete PACKAGE. +# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Camilo Flores , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-03-04 14:35-0500\n" +"PO-Revision-Date: 2009-04-01 00:36-0300\n" +"Last-Translator: Camilo Flores \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ui/branch.py:71 +msgid "There have been modifications to your working copy. If you copy from the HEAD revision you will lose your changes." +msgstr "Se han detectado cambios en tu copia local. Si actualizas desde la versión HEAD perderás los cambios." + +#: ui/branch.py:89 +msgid "You must supply a destination path." +msgstr "Debes ingresar una ruta de destino." + +#: ui/branch.py:99 +msgid "The from revision field is required." +msgstr "Es necesario el campo \"desde versión\"." + +#: ui/branch.py:108 +msgid "Invalid revision information" +msgstr "Información no válida sobre la versión." + +#: ui/branch.py:123 +#: ui/glade/branch.glade.h:4 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:124 +msgid "Running Branch/tag Command..." +msgstr "Ejecutando el comando Branch/tag" + +#: ui/branch.py:126 +msgid "Completed Branch/tag" +msgstr "Comando Branch/tag exitoso." + +#: ui/updateto.py:70 +msgid "Update To Revision" +msgstr "Actualizar según versión" + +#: ui/updateto.py:71 +#: ui/update.py:54 +msgid "Updating..." +msgstr "Actualizando..." + +#: ui/updateto.py:79 +#: ui/update.py:57 +msgid "Completed Update" +msgstr "Actualización exitosa." + +#: ui/rename.py:59 +msgid "The new name field is required" +msgstr "Es necesario el campo \"nuevo nombre\"" + +#: ui/rename.py:70 +#: ui/glade/rename.glade.h:2 +msgid "Rename" +msgstr "Cambiar nombre" + +#: ui/rename.py:71 +msgid "Running Rename Command..." +msgstr "Ejecutando comando de cambio de nombre..." + +#: ui/rename.py:78 +msgid "Completed Rename" +msgstr "Cambio de nombre exitoso." + +#: ui/annotate.py:51 +msgid "Cannot annotate a directory" +msgstr "Imposible anotar el directorio" + +#: ui/annotate.py:58 +#, python-format +msgid "Annotate - %s" +msgstr "Anotar - %s" + +#: ui/annotate.py:71 +msgid "Line" +msgstr "Línea" + +#: ui/annotate.py:71 +#: ui/log.py:80 +#: ui/glade/switch.glade.h:5 +#: ui/glade/merge.glade.h:17 +#: ui/glade/checkout.glade.h:10 +#: ui/glade/update.glade.h:6 +msgid "Revision" +msgstr "Versión" + +#: ui/annotate.py:71 +#: ui/log.py:80 +msgid "Author" +msgstr "Autor" + +#: ui/annotate.py:72 +#: ui/dialog.py:47 +#: ui/log.py:81 +msgid "Date" +msgstr "Fecha" + +#: ui/annotate.py:72 +msgid "Text" +msgstr "Texto" + +#: ui/annotate.py:112 +msgid "The from revision field must be an integer" +msgstr "El campo \"desde version\" debe ser un número entero" + +#: ui/annotate.py:122 +msgid "Generating Annotation..." +msgstr "Generando Anotación..." + +#: ui/annotate.py:138 +#: lib/vcs/svn/__init__.py:122 +#: lib/vcs/svn/__init__.py:124 +msgid "Completed" +msgstr "Completo." + +#: ui/settings.py:50 +msgid "English" +msgstr "Inglés" + +#: ui/settings.py:156 +#: ui/settings.py:165 +msgid "Select a program" +msgstr "Elije el programa" + +#: ui/settings.py:174 +msgid "Are you sure you want to clear your repository paths?" +msgstr "¿Estás seguro de querer reestablecer las rutas de tu repositorio?" + +#: ui/settings.py:181 +msgid "Repository paths cleared" +msgstr "Rutas del repositorio reestablecidas" + +#: ui/settings.py:185 +msgid "Are you sure you want to clear your previous messages?" +msgstr "¿Estás seguro de querer eliminar tus mensajes previos?" + +#: ui/settings.py:192 +msgid "Previous messages cleared" +msgstr "Mensajes previos eliminados" + +#: ui/settings.py:196 +msgid "Are you sure you want to clear your authentication information?" +msgstr "¿Estas seguro de querer eliminar tu información de autenticación?" + +#: ui/settings.py:213 +msgid "Authentication information cleared" +msgstr "Información de autenticación eliminada" + +#: ui/cleanup.py:54 +#: lib/extensions/nautilus/RabbitVCS.py:831 +msgid "Cleanup" +msgstr "Limpiar" + +#: ui/cleanup.py:55 +#: ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Limpiando..." + +#: ui/cleanup.py:57 +msgid "Completed Cleanup" +msgstr "Limpieza Completa" + +#: ui/relocate.py:76 +msgid "The from and to url fields are both required." +msgstr "Son necesarios los campos \"desde\" y \"hasta\" la url" + +#: ui/relocate.py:86 +#: ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Relocalizar" + +#: ui/relocate.py:87 +msgid "Running Relocate Command..." +msgstr "Ejecutando relocalización..." + +#: ui/relocate.py:94 +msgid "Completed Relocate" +msgstr "Relocalización Completa" + +#: ui/add.py:64 +#: ui/lock.py:66 +#: ui/resolve.py:55 +#: ui/action.py:66 +#: ui/commit.py:73 +#: ui/unlock.py:55 +#: ui/log.py:89 +#: ui/revert.py:55 +msgid "Path" +msgstr "Ruta" + +#: ui/add.py:64 +#: ui/lock.py:66 +#: ui/resolve.py:55 +#: ui/commit.py:73 +#: ui/unlock.py:55 +#: ui/revert.py:55 +msgid "Extension" +msgstr "Extensión" + +#: ui/add.py:78 +#: ui/lock.py:96 +#: ui/commit.py:97 +#: ui/unlock.py:70 +#: ui/log.py:253 +#: ui/glade/log.glade.h:6 +msgid "Loading..." +msgstr "Cargando..." + +#: ui/add.py:81 +#: ui/lock.py:99 +#: ui/commit.py:100 +#: ui/unlock.py:91 +#, python-format +msgid "Found %d item(s)" +msgstr "Encontrado %d elemento(s)" + +#: ui/add.py:115 +#: ui/commit.py:269 +#: ui/glade/add.glade.h:1 +#: lib/extensions/nautilus/RabbitVCS.py:638 +msgid "Add" +msgstr "Añadir" + +#: ui/add.py:116 +msgid "Running Add Command..." +msgstr "Añadiendo..." + +#: ui/add.py:118 +msgid "Completed Add" +msgstr "Añadir Completado" + +#: ui/add.py:141 +#: ui/lock.py:206 +#: ui/commit.py:239 +msgid "Open" +msgstr "Abrir" + +#: ui/add.py:150 +#: ui/lock.py:216 +#: ui/commit.py:249 +msgid "Browse to" +msgstr "Navegar hacia" + +#: ui/add.py:159 +#: ui/commit.py:259 +#: ui/glade/properties.glade.h:2 +#: lib/extensions/nautilus/RabbitVCS.py:735 +msgid "Delete" +msgstr "Eliminar" + +#: ui/add.py:168 +#: ui/commit.py:299 +#: lib/extensions/nautilus/RabbitVCS.py:654 +msgid "Add to ignore list" +msgstr "Añadir a lista de ignorados" + +#: ui/import.py:41 +#, python-format +msgid "Import - %s" +msgstr "Importar - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Es necesario el campo de la URL del repositorio." + +#: ui/import.py:80 +#: ui/glade/import.glade.h:3 +#: lib/extensions/nautilus/RabbitVCS.py:888 +msgid "Import" +msgstr "Importar" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Importando..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Importar Completado" + +#: ui/lock.py:67 +#: lib/vcs/svn/__init__.py:132 +msgid "Locked" +msgstr "Bloqueado" + +#: ui/lock.py:90 +#: ui/lock.py:107 +msgid "Yes" +msgstr "Sí" + +#: ui/lock.py:144 +msgid "Get Lock" +msgstr "Bloquear" + +#: ui/lock.py:145 +msgid "Running Lock Command..." +msgstr "Bloqueando..." + +#: ui/lock.py:154 +msgid "Completed Lock" +msgstr "Bloqueo Completado" + +#: ui/lock.py:176 +msgid "Remove Lock" +msgstr "Levantar Bloqueo" + +#: ui/lock.py:186 +#: ui/commit.py:229 +#: lib/extensions/nautilus/RabbitVCS.py:597 +msgid "View Diff" +msgstr "Ver Diferencias" + +#: ui/lock.py:196 +#: ui/glade/switch.glade.h:6 +#: ui/glade/branch.glade.h:10 +#: ui/glade/merge.glade.h:18 +#: ui/glade/checkout.glade.h:11 +#: ui/glade/update.glade.h:7 +msgid "Show log" +msgstr "Mostrar historial" + +#: ui/export.py:40 +#, python-format +msgid "Export - %s" +msgstr "Exportar - %s" + +#: ui/export.py:58 +#: ui/checkout.py:82 +msgid "The repository URL and destination path are both required fields." +msgstr "Se necesita el campo de la URL del repositorio y la ruta de destino." + +#: ui/export.py:79 +#: lib/extensions/nautilus/RabbitVCS.py:856 +msgid "Export" +msgstr "Exportar" + +#: ui/export.py:80 +msgid "Running Export Command..." +msgstr "Exportando..." + +#: ui/export.py:91 +msgid "Completed Export" +msgstr "Exportar Completado" + +#: ui/resolve.py:45 +#: ui/resolve.py:76 +#: lib/extensions/nautilus/RabbitVCS.py:767 +msgid "Resolve" +msgstr "Resolver" + +#: ui/resolve.py:77 +msgid "Running Resolve Command..." +msgstr "Resolviendo..." + +#: ui/resolve.py:80 +msgid "Completed Resolve" +msgstr "Resolver Completado" + +#: ui/action.py:66 +#: ui/log.py:89 +msgid "Action" +msgstr "Acción" + +#: ui/action.py:66 +msgid "Mime Type" +msgstr "Tipo MIME" + +#: ui/action.py:135 +msgid "Empty Message" +msgstr "Mensaje vacío" + +#: ui/action.py:249 +#: ui/log.py:309 +msgid "Finished" +msgstr "Finalizado" + +#: ui/action.py:253 +#, python-format +msgid "%s - Finished" +msgstr "%s - Finalizado" + +#: ui/commit.py:66 +msgid "The given path is not a working copy" +msgstr "La ruta proporcionada no corresponde a una copia de trabajo" + +#: ui/commit.py:74 +msgid "Text Status" +msgstr "Estado del Texto" + +#: ui/commit.py:74 +msgid "Property Status" +msgstr "Estado de la Propiedad" + +#: ui/commit.py:188 +#: ui/glade/commit.glade.h:4 +#: lib/extensions/nautilus/RabbitVCS.py:568 +msgid "Commit" +msgstr "Enviar cambios" + +#: ui/commit.py:189 +msgid "Running Commit Command..." +msgstr "Enviando cambios..." + +#: ui/commit.py:195 +msgid "Completed Commit" +msgstr "Envío de cambios completado" + +#: ui/commit.py:279 +#: ui/revert.py:45 +#: ui/revert.py:75 +#: lib/extensions/nautilus/RabbitVCS.py:751 +msgid "Revert" +msgstr "Revertir modificaciones" + +#: ui/commit.py:289 +msgid "Restore" +msgstr "Restaurar" + +#: ui/dialog.py:47 +#: ui/log.py:81 +#: ui/glade/dialogs.glade.h:20 +msgid "Message" +msgstr "Mensaje" + +#: ui/dialog.py:88 +msgid "Select a Folder" +msgstr "Selecciona una carpeta" + +#: ui/dialog.py:117 +#: ui/glade/log.glade.h:12 +msgid "to" +msgstr "hacia" + +#: ui/dialog.py:210 +msgid "Select a File" +msgstr "Selecciona un archivo" + +#: ui/dialog.py:229 +#: ui/glade/dialogs.glade.h:10 +msgid "Are you sure you want to continue?" +msgstr "¿Estás seguro de querer continuar?" + +#: ui/dialog.py:257 +msgid "the selected item(s)" +msgstr "los elementos seleccionados" + +#: ui/switch.py:65 +msgid "The repository location is a required field." +msgstr "Es necesario el campo de la ubicación del repositorio." + +#: ui/switch.py:81 +#: ui/glade/switch.glade.h:7 +msgid "Switch" +msgstr "" + +#: ui/switch.py:82 +msgid "Running Switch Command..." +msgstr "Ejecutando Switch" + +#: ui/switch.py:90 +msgid "Completed Switch" +msgstr "Switch Completado" + +#: ui/unlock.py:45 +#: ui/unlock.py:109 +msgid "Unlock" +msgstr "Desbloquear" + +#: ui/unlock.py:110 +msgid "Running Unlock Command..." +msgstr "Desbloqueando..." + +#: ui/unlock.py:113 +msgid "Completed Unlock" +msgstr "Desbloqueo Completo" + +#: ui/merge.py:81 +msgid "Running Merge Test" +msgstr "Ejecutando " + +#: ui/merge.py:82 +msgid "Completed Merge Test" +msgstr "Prueba de factibilidad de fusión completado" + +#: ui/merge.py:84 +msgid "Running Merge Command" +msgstr "Fusionando..." + +#: ui/merge.py:85 +msgid "Completed Merge" +msgstr "Fusión completa" + +#: ui/merge.py:93 +msgid "Merge" +msgstr "Fusionar" + +#: ui/checkout.py:52 +#, python-format +msgid "Checkout - %s" +msgstr "Descargar repositorio - %s" + +#: ui/checkout.py:100 +#: ui/glade/checkout.glade.h:5 +#: lib/extensions/nautilus/RabbitVCS.py:536 +msgid "Checkout" +msgstr "Descargar repositorio" + +#: ui/checkout.py:101 +msgid "Running Checkout Command..." +msgstr "Descargando repositorio..." + +#: ui/checkout.py:111 +msgid "Completed Checkout" +msgstr "Descarga de repositorio completa" + +#: ui/log.py:63 +#, python-format +msgid "Log - %s" +msgstr "Bitácora - %s" + +#: ui/log.py:90 +msgid "Copy From Path" +msgstr "Copiar desde ruta" + +#: ui/log.py:90 +msgid "Copy From Revision" +msgstr "Copiar desde versión" + +#: ui/log.py:112 +msgid "Cancelled" +msgstr "Cancelado" + +#: ui/log.py:236 +#: ui/log.py:237 +#: ui/glade/log.glade.h:8 +msgid "N/A" +msgstr "N/D" + +#: ui/log.py:284 +msgid "(no author)" +msgstr "(sin autor)" + +#: ui/log.py:313 +msgid "Retrieving Log Information..." +msgstr "Recuperando información de la bitácora" + +#: ui/properties.py:53 +#, python-format +msgid "Properties - %s" +msgstr "Propiedades - %s" + +#: ui/properties.py:61 +msgid "Name" +msgstr "Nombre" + +#: ui/properties.py:61 +msgid "Value" +msgstr "Valor" + +#: ui/revert.py:76 +msgid "Running Revert Command..." +msgstr "Revirtiendo cambios..." + +#: ui/revert.py:78 +msgid "Completed Revert" +msgstr "Reversión de cambios completada" + +#: ui/update.py:53 +#: ui/glade/update.glade.h:8 +#: lib/extensions/nautilus/RabbitVCS.py:552 +msgid "Update" +msgstr "Actualizar" + +#: ui/create.py:49 +msgid "Repository successfully created" +msgstr "Repositorio creado exitosamente" + +#: ui/create.py:51 +msgid "There was an error creating the repository. Make sure the given folder is empty." +msgstr "Hubo un error al crear el repositorio. Asegúrate de que la carpeta especificada esté vacía." + +#: ui/glade/switch.glade.h:1 +#: ui/glade/checkout.glade.h:3 +#: ui/glade/update.glade.h:1 +msgid "Revision" +msgstr "Versión" + +#: ui/glade/switch.glade.h:2 +msgid "Switch Details" +msgstr "Detalles del Switch" + +#: ui/glade/switch.glade.h:3 +#: ui/glade/branch.glade.h:8 +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Desde:" + +#: ui/glade/switch.glade.h:4 +#: ui/glade/merge.glade.h:10 +#: ui/glade/checkout.glade.h:7 +#: ui/glade/update.glade.h:3 +msgid "HEAD" +msgstr "" + +#: ui/glade/switch.glade.h:8 +#: ui/glade/branch.glade.h:11 +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Hasta:" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Mensajes de notificación" + +#: ui/glade/commit.glade.h:1 +#: ui/glade/branch.glade.h:1 +msgid "Add Message" +msgstr "Agregar Mensaje" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to see diff)" +msgstr "Archivos Modificados (doble click para comparar diferencias)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Enviar hacia:" + +#: ui/glade/commit.glade.h:5 +#: ui/glade/lock.glade.h:4 +#: ui/glade/branch.glade.h:9 +#: ui/glade/dialogs.glade.h:22 +#: ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Mensajes anteriores" + +#: ui/glade/commit.glade.h:6 +#: ui/glade/lock.glade.h:5 +#: ui/glade/add.glade.h:2 +msgid "Select / Deselect all" +msgstr "Seleccionar / Descartar todos" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Mostrar archivos fuera del control de versiones" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Archivos a bloquear" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Por favor describe por qué estás bloqueando estos archivos" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Bloquear Archivos" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Romper los bloqueos" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Propiedades para:" + +#: ui/glade/properties.glade.h:3 +msgid "Edit..." +msgstr "Editar..." + +#: ui/glade/properties.glade.h:4 +msgid "New..." +msgstr "Nuevo..." + +#: ui/glade/properties.glade.h:5 +#: lib/extensions/nautilus/RabbitVCS.py:995 +msgid "Properties" +msgstr "Propiedades" + +#: ui/glade/properties.glade.h:6 +msgid "URL/Path:" +msgstr "URL/Ruta:" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Desde la versión" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Hasta la versión" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Anotar" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Información de la versión" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:4 +#: lib/extensions/nautilus/RabbitVCS.py:1059 +msgid "About" +msgstr "Acerca de" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autores:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Agradecimientos:" + +#: ui/glade/rename.glade.h:1 +msgid "New Name:" +msgstr "Nuevo nombre:" + +#: ui/glade/branch.glade.h:2 +msgid "Create copy from" +msgstr "Crear copia desde" + +#: ui/glade/branch.glade.h:3 +#: ui/glade/checkout.glade.h:2 +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Repositorio" + +#: ui/glade/branch.glade.h:5 +msgid "Copy from HEAD" +msgstr "Copiar desde versión HEAD" + +#: ui/glade/branch.glade.h:6 +msgid "Copy from revision" +msgstr "Copiar desde la versión" + +#: ui/glade/branch.glade.h:7 +msgid "Copy from working copy" +msgstr "Copiar desde la copia de trabajo" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s)" +msgstr "Archivos afectados" + +#: ui/glade/log.glade.h:3 +#: ui/glade/dialogs.glade.h:3 +msgid "Message" +msgstr "Mensaje" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Tabla de versiones" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Límite:" + +#: ui/glade/log.glade.h:7 +msgid "Log" +msgstr "Bitácora" + +#: ui/glade/log.glade.h:9 +msgid "Refresh" +msgstr "Refrescar" + +#: ui/glade/log.glade.h:10 +msgid "Showing Revisions:" +msgstr "Mostrar versiones:" + +#: ui/glade/log.glade.h:11 +msgid "Stop on copy" +msgstr "Detenerse en la copia" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Desde la URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Desde: (URL y versión a fusionar)" + +#: ui/glade/merge.glade.h:3 +#: ui/glade/checkout.glade.h:1 +msgid "Options" +msgstr "Opciones" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Rango de versiones" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Desde: (URL y versión a fusionar)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL desde la cual fusionar" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Copia de trabajo" + +#: ui/glade/merge.glade.h:8 +msgid "Choose this method if you have made some changes to a branch and wish to merge your changes with another branch." +msgstr "Escoge este método si has hecho cambios a un branch y deseas fusionar tus cambios con otro branch" + +#: ui/glade/merge.glade.h:9 +msgid "Choose this method if you wish to merge two different branches into your working copy." +msgstr "Escoge este método si deseas fusionar dos branch diferentes en tu copia de trabajo" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignorar antecesores" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Asistente de Fusión" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Fusionar un rango de versiones" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Fusionar dos árboles diferentes" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Registrar sólo la fusión" + +#: ui/glade/merge.glade.h:16 +#: ui/glade/checkout.glade.h:9 +#: ui/glade/update.glade.h:5 +msgid "Recursive" +msgstr "Recursivamente" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Comprobar factibilidad de fusión" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write out the revisions manually, each separated by a comma. You can specify a revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autenticación" + +#: ui/glade/settings.glade.h:2 +msgid "Log Messages" +msgstr "Mensajes de la bitácora" + +#: ui/glade/settings.glade.h:3 +msgid "Logging Options" +msgstr "Opciones de la bitácora" + +#: ui/glade/settings.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Program used to browse repositories" +msgstr "Programa a usar para navegar en los repositorios" + +#: ui/glade/settings.glade.h:6 +msgid "Program used to compare files" +msgstr "Programa a usar para comparar archivos" + +#: ui/glade/settings.glade.h:7 +msgid "URL History" +msgstr "Historia de la URL" + +#: ui/glade/settings.glade.h:8 +#: ui/glade/checkout.glade.h:4 +msgid "Browse..." +msgstr "Navegar..." + +#: ui/glade/settings.glade.h:9 +msgid "Clear your authentication information" +msgstr "Eliminar tu información de autenticación" + +#: ui/glade/settings.glade.h:10 +msgid "Enable emblems" +msgstr "Activar emblemas" + +#: ui/glade/settings.glade.h:11 +msgid "Enable file attributes" +msgstr "Activar atributos de archivo" + +#: ui/glade/settings.glade.h:12 +msgid "Enable recursive status checks" +msgstr "Activar comprobación de estado recursiva" + +#: ui/glade/settings.glade.h:13 +msgid "External Programs" +msgstr "Programas Externos" + +#: ui/glade/settings.glade.h:14 +msgid "General" +msgstr "General" + +#: ui/glade/settings.glade.h:15 +msgid "Language:" +msgstr "Idioma:" + +#: ui/glade/settings.glade.h:16 +msgid "Logging" +msgstr "Bitácora" + +#: ui/glade/settings.glade.h:17 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:18 +msgid "Number of URLs to remember" +msgstr "Cantidad de URLs a recordar" + +#: ui/glade/settings.glade.h:19 +msgid "Number of messages to remember" +msgstr "Cantidad de mensajes a recordar" + +#: ui/glade/settings.glade.h:20 +msgid "Saved Data" +msgstr "Información guardada" + +#: ui/glade/settings.glade.h:21 +#: lib/extensions/nautilus/RabbitVCS.py:1043 +msgid "Settings" +msgstr "Configuración" + +#: ui/glade/settings.glade.h:22 +msgid "Show new version on the right side" +msgstr "Mostrar la nueva versión al lado derecho" + +#: ui/glade/settings.glade.h:23 +msgid "Type:" +msgstr "Tipo:" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Limpieza Solicitada...\n" +"\n" +"¿Deseas comenzar la limpieza de tu copia de trabajo?" + +#: ui/glade/dialogs.glade.h:1 +msgid "Certificate Details" +msgstr "Detalles del Certificado" + +#: ui/glade/dialogs.glade.h:2 +msgid "Edit Property Details" +msgstr "Edita los detalles de la propiedad" + +#: ui/glade/dialogs.glade.h:4 +msgid "Please add your authentication details" +msgstr "Por favor agrega tus detalles de autenticación" + +#: ui/glade/dialogs.glade.h:5 +msgid "Previous Messages" +msgstr "Mensajes anteriores" + +#: ui/glade/dialogs.glade.h:7 +msgid "Are you sure you want to delete %item%?" +msgstr "¿Estás seguro de eliminar %item%?" + +#: ui/glade/dialogs.glade.h:8 +msgid "Accept Forever" +msgstr "Aceptar permanentemente" + +#: ui/glade/dialogs.glade.h:9 +msgid "Accept Once" +msgstr "Aceptar por ahora" + +#: ui/glade/dialogs.glade.h:11 +msgid "Authentication" +msgstr "Autenticación" + +#: ui/glade/dialogs.glade.h:12 +msgid "Check Certificate" +msgstr "Comprobar certificado" + +#: ui/glade/dialogs.glade.h:13 +msgid "Confirmation" +msgstr "Confirmación" + +#: ui/glade/dialogs.glade.h:14 +msgid "Delete Confirmation" +msgstr "Eliminar confirmación" + +#: ui/glade/dialogs.glade.h:15 +msgid "Deny" +msgstr "Denegar" + +#: ui/glade/dialogs.glade.h:16 +msgid "Fingerprint:" +msgstr "Huella digital:" + +#: ui/glade/dialogs.glade.h:17 +msgid "Host:" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Issuer:" +msgstr "Reportado por:" + +#: ui/glade/dialogs.glade.h:19 +msgid "Login:" +msgstr "Nombre de usuario:" + +#: ui/glade/dialogs.glade.h:21 +msgid "Password:" +msgstr "Contraseña:" + +#: ui/glade/dialogs.glade.h:23 +msgid "Property" +msgstr "Propiedad" + +#: ui/glade/dialogs.glade.h:24 +msgid "Property:" +msgstr "Propiedad:" + +#: ui/glade/dialogs.glade.h:25 +msgid "Realm:" +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Save Authentication" +msgstr "Guardar autenticación" + +#: ui/glade/dialogs.glade.h:27 +msgid "The item(s) will be sent to the trash can." +msgstr "Los elementos serán enviados a la Papelera" + +#: ui/glade/dialogs.glade.h:28 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Value:" +msgstr "Valor:" + +#: ui/glade/checkout.glade.h:6 +msgid "Destination:" +msgstr "Destino:" + +#: ui/glade/checkout.glade.h:8 +#: ui/glade/update.glade.h:4 +msgid "Omit Externals" +msgstr "Omitir los Externos" + +#: ui/glade/checkout.glade.h:12 +msgid "URL:" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Importar mensaje" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Incluir archivos ignorados" + +#: ui/glade/update.glade.h:2 +msgid "Update Depth" +msgstr "Profundidad de la actualización" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Cambiar el repositorio de tu copia de trabajo" + +#: lib/extensions/nautilus/RabbitVCS.py:362 +msgid "Debug" +msgstr "Depurar" + +#: lib/extensions/nautilus/RabbitVCS.py:375 +msgid "DBus" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:388 +msgid "Start/Restart Service" +msgstr "Iniciar/Detener Servicio" + +#: lib/extensions/nautilus/RabbitVCS.py:404 +msgid "Exit Service" +msgstr "Terminar Servicio" + +#: lib/extensions/nautilus/RabbitVCS.py:422 +msgid "Bugs" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:435 +msgid "Test Asynchronicity" +msgstr "Probar Asincronicidad" + +#: lib/extensions/nautilus/RabbitVCS.py:453 +msgid "Open Shell" +msgstr "Abrir Consola" + +#: lib/extensions/nautilus/RabbitVCS.py:469 +msgid "Refresh Status" +msgstr "Refrescar Estado" + +#: lib/extensions/nautilus/RabbitVCS.py:486 +msgid "Debug Revert" +msgstr "Revertir Debug" + +#: lib/extensions/nautilus/RabbitVCS.py:487 +msgid "Reverts everything it sees" +msgstr "Revertir todo lo que vea" + +#: lib/extensions/nautilus/RabbitVCS.py:502 +msgid "Invalidate" +msgstr "Invalidar" + +#: lib/extensions/nautilus/RabbitVCS.py:503 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:518 +msgid "Add Emblem" +msgstr "Agregar Emblema" + +#: lib/extensions/nautilus/RabbitVCS.py:519 +msgid "Add an emblem" +msgstr "Agregar un emblema" + +#: lib/extensions/nautilus/RabbitVCS.py:537 +msgid "Check out a working copy" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:553 +msgid "Update a working copy" +msgstr "Actualizar copia de trabajo" + +#: lib/extensions/nautilus/RabbitVCS.py:569 +msgid "Commit modifications to the repository" +msgstr "Enviar modificaciones al repositorio" + +#: lib/extensions/nautilus/RabbitVCS.py:584 +msgid "RabbitVCS" +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:598 +msgid "View the modifications made to a file" +msgstr "Ver las modificaciones hechas a un archivo" + +#: lib/extensions/nautilus/RabbitVCS.py:613 +msgid "Show Log" +msgstr "Mostrar bitácora" + +#: lib/extensions/nautilus/RabbitVCS.py:614 +msgid "Show a file's log information" +msgstr "Mostrar la información de la bitácora de un archivo" + +#: lib/extensions/nautilus/RabbitVCS.py:639 +msgid "Schedule an item to be added to the repository" +msgstr "Agendar un elemento a añadir al repositorio" + +#: lib/extensions/nautilus/RabbitVCS.py:663 +msgid "Ignore an item" +msgstr "Ignorar un elemento" + +#: lib/extensions/nautilus/RabbitVCS.py:678 +msgid "Ignore all files with this extension" +msgstr "Ignorar todos los archivos con esta extension" + +#: lib/extensions/nautilus/RabbitVCS.py:703 +msgid "Update to revision..." +msgstr "Actualizar según la versión..." + +#: lib/extensions/nautilus/RabbitVCS.py:704 +msgid "Update a file to a specific revision" +msgstr "Actualizar un archivo según una versión particular" + +#: lib/extensions/nautilus/RabbitVCS.py:719 +msgid "Rename..." +msgstr "Cambiar nombre..." + +#: lib/extensions/nautilus/RabbitVCS.py:720 +msgid "Schedule an item to be renamed on the repository" +msgstr "Agendar cambio de nombre de un elemento del repositorio" + +#: lib/extensions/nautilus/RabbitVCS.py:736 +msgid "Schedule an item to be deleted from the repository" +msgstr "Agendar eliminación de un elemento del repositorio" + +#: lib/extensions/nautilus/RabbitVCS.py:752 +msgid "Revert an item to its unmodified state" +msgstr "Revertir un elemento a un estado sin modificaciones" + +#: lib/extensions/nautilus/RabbitVCS.py:768 +msgid "Mark a conflicted item as resolved" +msgstr "Marcar un elemento en conflicto como resuelto" + +#: lib/extensions/nautilus/RabbitVCS.py:783 +msgid "Relocate..." +msgstr "Reubicar..." + +#: lib/extensions/nautilus/RabbitVCS.py:784 +msgid "Relocate your working copy" +msgstr "Reubicar tu copia de trabajo" + +#: lib/extensions/nautilus/RabbitVCS.py:799 +msgid "Get Lock..." +msgstr "Solicitar bloqueo..." + +#: lib/extensions/nautilus/RabbitVCS.py:800 +msgid "Locally lock items" +msgstr "Bloquear elementos localmente" + +#: lib/extensions/nautilus/RabbitVCS.py:815 +msgid "Release Lock..." +msgstr "Levantar bloqueo..." + +#: lib/extensions/nautilus/RabbitVCS.py:816 +msgid "Release lock on an item" +msgstr "Levantar bloqueo de un elemento" + +#: lib/extensions/nautilus/RabbitVCS.py:832 +msgid "Clean up working copy" +msgstr "Limpiar tu copia de trabajo" + +#: lib/extensions/nautilus/RabbitVCS.py:857 +msgid "Export a working copy or repository with no versioning information" +msgstr "Exportar tu copia de trabajo o repositorio sin información de versionamiento" + +#: lib/extensions/nautilus/RabbitVCS.py:872 +msgid "Create Repository here" +msgstr "Crear un repositorio aquí" + +#: lib/extensions/nautilus/RabbitVCS.py:873 +msgid "Create a repository in a folder" +msgstr "Crear un repositorio en una carpeta" + +#: lib/extensions/nautilus/RabbitVCS.py:889 +msgid "Import an item into a repository" +msgstr "Importar elemento a un repositorio" + +#: lib/extensions/nautilus/RabbitVCS.py:913 +msgid "Branch/tag..." +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:914 +msgid "Copy an item to another location in the repository" +msgstr "Copiar un elemento a otra ubicación dentro del repositorio" + +#: lib/extensions/nautilus/RabbitVCS.py:929 +msgid "Switch..." +msgstr "" + +#: lib/extensions/nautilus/RabbitVCS.py:930 +msgid "Change the repository location of a working copy" +msgstr "Cambiar la ubicación del repositorio de una copia de trabajo" + +#: lib/extensions/nautilus/RabbitVCS.py:945 +msgid "Merge..." +msgstr "Fusionar..." + +#: lib/extensions/nautilus/RabbitVCS.py:946 +msgid "A wizard with steps for merging" +msgstr "Un asistente con pasos para fusionar" + +#: lib/extensions/nautilus/RabbitVCS.py:970 +msgid "Annotate..." +msgstr "Anotar..." + +#: lib/extensions/nautilus/RabbitVCS.py:971 +msgid "Annotate a file" +msgstr "Anotar un archivo" + +#: lib/extensions/nautilus/RabbitVCS.py:996 +msgid "View the properties of an item" +msgstr "Ver propiedades de un elemento" + +#: lib/extensions/nautilus/RabbitVCS.py:1027 +msgid "Help" +msgstr "Ayuda" + +#: lib/extensions/nautilus/RabbitVCS.py:1028 +msgid "View help" +msgstr "Ver ayuda" + +#: lib/extensions/nautilus/RabbitVCS.py:1044 +msgid "View or change RabbitVCS settings" +msgstr "Ver o modificar la configuración de RabbitVCS" + +#: lib/extensions/nautilus/RabbitVCS.py:1060 +msgid "About RabbitVCS" +msgstr "Acerca de RabbitVCS" + +#: lib/vcs/svn/__init__.py:111 +#: lib/vcs/svn/__init__.py:120 +#: lib/vcs/svn/__init__.py:127 +msgid "Added" +msgstr "Añadido" + +#: lib/vcs/svn/__init__.py:112 +#: lib/vcs/svn/__init__.py:128 +msgid "Copied" +msgstr "Copiado" + +#: lib/vcs/svn/__init__.py:113 +#: lib/vcs/svn/__init__.py:119 +msgid "Deleted" +msgstr "Eliminado" + +#: lib/vcs/svn/__init__.py:114 +msgid "Restored" +msgstr "Restaurado" + +#: lib/vcs/svn/__init__.py:115 +msgid "Reverted" +msgstr "Revertido" + +#: lib/vcs/svn/__init__.py:116 +msgid "Failed Revert" +msgstr "Revertir fallido" + +#: lib/vcs/svn/__init__.py:117 +msgid "Resolved" +msgstr "Resuelto" + +#: lib/vcs/svn/__init__.py:118 +msgid "Skipped" +msgstr "Omitido" + +#: lib/vcs/svn/__init__.py:121 +msgid "Updated" +msgstr "Actualizado" + +#: lib/vcs/svn/__init__.py:123 +#: lib/vcs/svn/__init__.py:125 +msgid "External" +msgstr "Externo" + +#: lib/vcs/svn/__init__.py:126 +msgid "Modified" +msgstr "Modificado" + +#: lib/vcs/svn/__init__.py:129 +msgid "Replaced" +msgstr "Reemplazado" + +#: lib/vcs/svn/__init__.py:130 +#: lib/vcs/svn/__init__.py:149 +msgid "Changed" +msgstr "Cambiado" + +#: lib/vcs/svn/__init__.py:131 +msgid "Annotated" +msgstr "Anotado" + +#: lib/vcs/svn/__init__.py:133 +msgid "Unlocked" +msgstr "Desbloqueado" + +#: lib/vcs/svn/__init__.py:134 +msgid "Failed Lock" +msgstr "Bloqueo fallido" + +#: lib/vcs/svn/__init__.py:135 +msgid "Failed Unlock" +msgstr "Desbloqueo fallido" + +#: lib/vcs/svn/__init__.py:144 +msgid "Inapplicable" +msgstr "No aplicable" + +#: lib/vcs/svn/__init__.py:145 +msgid "Unknown" +msgstr "Desconocido" + +#: lib/vcs/svn/__init__.py:146 +msgid "Unchanged" +msgstr "Sin cambios" + +#: lib/vcs/svn/__init__.py:147 +msgid "Missing" +msgstr "Faltante" + +#: lib/vcs/svn/__init__.py:148 +msgid "Obstructed" +msgstr "Obstruído" + +#: lib/vcs/svn/__init__.py:150 +msgid "Merged" +msgstr "Fusionado" + +#: lib/vcs/svn/__init__.py:151 +msgid "Conflicted" +msgstr "En conflicto" + diff -Nru rabbitvcs-0.13.1/po/es.po rabbitvcs-0.15.0.5/po/es.po --- rabbitvcs-0.13.1/po/es.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/es.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2118 @@ +# Spanish translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-03-19 15:25+0000\n" +"Last-Translator: Raúl Ricardo Amaya \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i segundo" +msgstr[1] "%i segundos" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minuto" +msgstr[1] "%i minutos" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i hora" +msgstr[1] "%i horas" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i día" +msgstr[1] "%i días" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i semana" +msgstr[1] "%i semanas" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i mes" +msgstr[1] "%i meses" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i año" +msgstr[1] "%i años" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Depurar" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Errores" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Abrir terminal" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Actualizar estado" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Depurar reversión" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Revertir todo lo que se vea" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Invalidar" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Forzar a una llamada a invalidate_extension_info()" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Añadir emblema" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Añadir un emblema" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Comprobar..." + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Obtener una copia de trabajo" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Actualizar" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Actualizar una copia de trabajo" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Confirmar" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Confirmar modificaciones al repositorio" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Navegador de repositorio" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Navegar por un árbol de repositorio" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "Comprobar si hay modificaciones..." + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "Comprobar si hay modificaciones en el repositorio" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Menú de Diff..." + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "Lista de opciones de comparación" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Ver diff con base" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Ver las modificaciones realizadas a un archivo" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Ver diff entre archivos/carpetas" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Ver las diferencias entre dos archivos" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Ver diff con la versión anterior" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "Ver las modificaciones del archivo desde el último cambio" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Comparar con base" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" +"Comparar con base usando la herramienta de comparación uno al lado del otro" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Comparar archivos/carpetas" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "Comparar las diferencias entre los dos elementos" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Comparar con versión anterior" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" +"Comparar con revisión anterior usando la herramienta de comparación uno al " +"lado del otro" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Mostrar cambios..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "Mostrar cambios entre rutas y revisiones" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Mostrar registro" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Mostrar información de registro de un archivo" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Añadir" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "Gestionar elementos que se añadirán al repositorio" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Añadir a la lista de ignorados" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Actualizar a revisión..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Actualizar un archivo a una versión específica" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Renombrar..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Planificar que un elemento sea renombrado en el repositorio" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Eliminar" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Planificar que un elemento sea eliminado del repositorio" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Revertir" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Revertir un elemento a su estado no modificado" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Resolver" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Marcar un elemento conflictivo como resuelto" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Restaurar" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Restaurar un elemento que falta" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Reubicar..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Reubicar copia de trabajo" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Bloquear" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Elementos locales bloqueados" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Desblouear..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Desbloquear un elemento" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Limpiar" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Limpiar copia de trabajo" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Exportar..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" +"Exportar una copia de trabajo o repositorio sin información de versionado" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Crear aquí un repositorio" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Crear un repositorio en una carpeta" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importar" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Importar un elemento en un repositorio" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Rama/etiqueta..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Copiar un elemento a otra ubicación en el repositorio" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Cambiar..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Cambiar la ubicación de un repositorio de una copia local" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Mezclar..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "Un asistente con pasos para mezclar" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Anotar..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Anotar un archivo" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Crear parche..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "Crea un archivo diff unificado con todos los cambios que hizo" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Aplicar parche..." + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "Aplica un archivo diff unificado a una copia funcional" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Propiedades" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Ver las propiedades de un elemento" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Ayuda" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Ver ayuda" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Preferencias" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Ver o cambiar las preferencias de RabbitVCS" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "Acerca de" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "Sobre RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Abrir" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Abrir un archivo" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Navegar en" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "Buscar archivo o carpeta" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Revertir propiedad" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Revertir esta propiedad a su estado original" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Revertir propiedad (recusivo)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "Revertir esta propiedad a su estado original (recursivo)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Eliminar propiedad" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Eliminar esta propiedad" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Eliminar esta propiedad (recursivo)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "Ignorar elementos por nombre de archivo" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "Ignorar elementos por extensión de archivo" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Actualizando..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Actualización completada" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Actualizar a revisión" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Obtener rep." + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Obtención completada" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Ruta" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Extensión" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Cargando..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "%d elemento(s) encontrados" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Ejecutando orden de añadir..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "La orden de añadir se ha completado" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revisión:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Exportar - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "Se requiere la URL del repositorio y la ruta de destino." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Exportar" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Ejecutando orden de exportar..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Exportación completada" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Aplicar parche" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Aplicar parche al directorio..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Aplicando archivo de parche..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Archivo de parche aplicado" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Fecha" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Mensaje" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importar - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Se necesita el campo de dirección del repositorio." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Ejecutando importación..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Importación completada" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Renombrar" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nuevo nombre:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Se necesita el campo de nuevo nombre" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Ejecutando la orden de renombrar..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Renombrado completado" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Estado del texto" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Estado de propiedad" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Ejecutando orden de confirmación..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Confirmación competada" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Estado" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "Ver diff uno al lado del otro" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Ejecutando prueba de mezcla" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Prueba de mezcla completada" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Ejecutando orden de mezclar" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Mezcla completada" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Mezclar" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"Ha ocurrido un error en el complemento RabbitVCS de Nautilus. Contacte con " +"el equipo de RabbitVCS con los detalles de error listados " +"debajo:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Seleccione una carpeta" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "a" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Seleccione un archivo" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Guardar como…" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "¿Está seguro de que quiere continuar?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "el/los elemento(s) seleccionado(s)" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "Se ha añadido una carpeta al repositorio" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Ejecutando orden de reversión..." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Reversión completada" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Se requieren los campos de origen y destino." + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Relocalizar" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Ejecutando orden de relocalización" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Relocalización completada" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revisión" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Autor" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Ver diff unificado" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Comparar uno al lado del otro" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Ejecutando orden de resolver..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Resolución completada" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Más acciones..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Cambiar" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Cambiar propiedad" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Sí" + +#: ui/changes.py:321 +msgid "No" +msgstr "No" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Abrir desde la primera revisión" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "Abrir desde la segunda revisión" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "No se puede anotar un directorio" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Anotado - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Línea" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Texto" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "El campo revisión debe ser un entero" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Registro - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/A" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Acción" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Copiar desde la ruta" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Copiar desde la revisión" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Ver diff con la copia de trabajo" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Ver diff entre revisiones" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Comparar con copia de trabajo" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Comparar revisiones" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Mostrar cambios entre revisiones" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Editar autor..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Editar mensaje de registro..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Editar propiedades de la revisión..." + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Editar autor" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Editar mensaje de registro" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Desconocido" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Inglés" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Seleccionar un programa" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "¿Está seguro de que quiere borrar las rutas de su repositorio?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Rutas de repositorio borradas" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "¿Está seguro de que quiere limpiar sus mensajes anteriores?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Mensajes anteriores borrados" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "¿Está seguro de que quiere limpiar su información de autenticación?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Información de autenticación borrada" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "No se pudo obtener la lista de propiedades" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Debe proporcionar una ruta de destino." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Rama/etiqueta" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Ejecutando la orden de Rama/Etiqueta..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Rama/etiqueta completada" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Bloqueado" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Tomar cerrojo" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Ejecutando orden de cerrar..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Clausura completada" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "La ubicación del repositorio es un campo obligatorio." + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Cambiar" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Ejecutando comando de cambio" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Cambio completo" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Número" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Copia de trabajo" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Equipo:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Obtener repositorio - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Obteniendo repositorio..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Nombre" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Crear parche" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "La ruta proporcionada no es una copia de trabajo" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Creando fichero parche" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Fichero parche creado" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Propiedades - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Valor" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Ha ocurrido un problema al guardar sus propiedades." + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Nota: los cambios en las propiedades se aplican instantáneamente. " +"Puede revisar y deshacer los cambios usando el menú de contexto de cada " +"elemento.\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"¿Quiere eliminar las propiedades seleccionadas de todos los archivos y " +"subdirectorios\n" +"que estén por debajo de este directorio?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "El archivo no está bajo control de versiones." + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Reservado" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "No se puedo establecer un nuevo valor a esta propiedad." + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Tipo MIME" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Finalizado" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Finalizado" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Mensaje de registro" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Abrir cerrojo" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Ejecutando orden de abrir cerrojo..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Apertura de cerrojo completada" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Tamaño" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Crear carpeta..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Copiar a..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Copiar el URL al portapapeles" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Mover a..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "¿Dónde quiere copiar la selección?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Nueva ubicación:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "¿A dónde quiere mover la selección?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Limpiando..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Limpieza completada" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Repositorio creado con éxito" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Ha habido un error al crear el repositorio. Asegúrese de que la carpeta dada " +"está vacía." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Propiedades de:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Las propiedades seleccionadas serán aplicadas recursivamente." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Eliminar propiedades recursivamente" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Editar..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Nuevo..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/ruta:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Cargar/actualizar" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Añadir mensaje" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Detalles de certificación" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Editar detalles de propiedad" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Nombre de carpeta" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Mensaje" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Por favor, añada sus detalles de autenticación" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "Introduzca su archivo certificación SSL" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Mensajes anteriores" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"¿Está seguro de que quiere eliminar " +"%item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "Error de RabbitVCS" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Aceptar siempre" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Aceptar una vez" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Aplicar propiedad recursivamente" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Autenticación" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Comprobar certificado" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Confirmación" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Crear carpeta..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Eliminar confirmación" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Denegar" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Huella:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Emisor:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Usuario:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Contraseña:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Ruta:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Mensajes anteriores" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Propiedad" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Propiedad:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "Error de RabbitVCS" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Reino:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "Certificación de cliente SSL" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Guardar autenticación" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Cambio de texto" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "El/los elemento(s) se enviarán a la papelera de reciclaje." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Válido:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Valor:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Enlaces" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Información de versión" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autores:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Agradecimientos:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" +"Archivos afectados (pulse dos veces para comparar con la base)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Tabla de revisiones" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Límite:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Registro" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Actualizar" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Mostrando revisiones:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Parar al copiar" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Petición de limpieza realizada...\n" +"\n" +"¿Empezar limpieza de copia local?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autenticación" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Mensajes de registro" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Opciones de registro" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Programa usado para comparar archivos" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "Histórico de URLs" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Navegar..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Limpiar su información de autenticación" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Activar emblemas" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Activar atributos de archivo" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Activar comprobaciones recursivas de estado" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Programas externos" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "General" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Idioma:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Registro" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Nivel mínimo de registro" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Número de URLs a recordar" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Número de mensajes a recordar" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Datos guardados" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Mostrar las herramientas de depuración de RabbitVCS" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" +"El menú de depuración es usado para diagnosticar problemas en RabbitVCS" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Tipo:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Archivos a cerrar" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" +"Por favor, describa el motivo por el que está cerrando estos archivos" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Archivos cerrados" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Seleccionar/Deseleccionar todos" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Robar los cerrojos" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "De revisión" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "A revisión" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Anotar" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" +"Archivos cambiados (pulse dos veces para comparar con el base)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Confirmar a:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Mostrar archivos no versionados" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Mensajes de notificación" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "URI remota:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Copia de trabajo:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Añadir nueva propiedad." + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Cerrar este diálogo." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Editor de propiedades" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "Actualizar lista de propiedades." + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Cambiar el repositorio de su copia de trabajo" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Desde:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "A:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Opciones" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revisión" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Omitir externos" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Recursivo" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Importar mensaje" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Repositorio" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Incluir archivos ignorados" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Desde URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Desde: (URL y revisión a mezclar)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Intervalo de revisión" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "A: (URL y revisión a mezclar)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL a la que mezclar" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Copia de trabajo" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Elija este método si ha hecho algunos cambios a la rama y desea mezclar sus " +"cambios con otra rama." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Elija este método si desea mezclar dos ramas diferentes en su copia de " +"trabajo." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignorar ancestros" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Asistente de mezclado" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Mezclar un intervalo de revisiones" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Mezclar dos árboles diferentes" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Registrar sólo la mezcla" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Mostrar registro" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Comprobar mezcla" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Use el diálogo de registro para seleccionar las revisiones que desea " +"mezclar. O escriba las revisiones manualmente, cada una separada por una " +"coma. Puede especificar un intervalo de revisiones con un guión. \n" +"\n" +"Ejemplo: 4-7,9,11,15-HEAD\n" +"\n" +"Para mezclar todas las revisiones, deje el campo vacío." + +#~ msgid "Completed" +#~ msgstr "Completado" + +#~ msgid "Switch Details" +#~ msgstr "Cambiar detalles" + +#~ msgid "Create copy from" +#~ msgstr "Crear copia de" + +#~ msgid "Program used to browse repositories" +#~ msgstr "Programa usado para navegar en repositorios" + +#~ msgid "Show new version on the right side" +#~ msgstr "Mostrar nueva versión a la derecha" + +#~ msgid "Destination:" +#~ msgstr "Destino:" + +#~ msgid "Update Depth" +#~ msgstr "Actualizar profundidad" + +#~ msgid "Deleted" +#~ msgstr "Eliminado" + +#~ msgid "Copied" +#~ msgstr "Copiado" + +#~ msgid "Added" +#~ msgstr "Añadido" + +#~ msgid "Restored" +#~ msgstr "Restaurado" + +#~ msgid "Reverted" +#~ msgstr "Revertido" + +#~ msgid "External" +#~ msgstr "Externo" + +#~ msgid "Failed Revert" +#~ msgstr "Falló la reversión" + +#~ msgid "Resolved" +#~ msgstr "Resuelto" + +#~ msgid "Skipped" +#~ msgstr "Ignorado" + +#~ msgid "Updated" +#~ msgstr "Actualizado" + +#~ msgid "Inapplicable" +#~ msgstr "No aplicable" + +#~ msgid "Unchanged" +#~ msgstr "Sin cambios" + +#~ msgid "Modified" +#~ msgstr "Modificado" + +#~ msgid "Replaced" +#~ msgstr "Reemplazado" + +#~ msgid "Changed" +#~ msgstr "Cambiado" + +#~ msgid "Annotated" +#~ msgstr "Anotado" + +#~ msgid "Unlocked" +#~ msgstr "Abierto" + +#~ msgid "Conflicted" +#~ msgstr "Con conflictos" + +#~ msgid "Merged" +#~ msgstr "Mezclado" + +#~ msgid "Missing" +#~ msgstr "Perdido" + +#~ msgid "Obstructed" +#~ msgstr "Obstruido" + +#~ msgid "(no author)" +#~ msgstr "(sin autor)" + +#~ msgid "Failed Unlock" +#~ msgstr "Falló desbloqueo" + +#~ msgid "Failed Lock" +#~ msgstr "Falló bloqueo" diff -Nru rabbitvcs-0.13.1/po/fa.po rabbitvcs-0.15.0.5/po/fa.po --- rabbitvcs-0.13.1/po/fa.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/fa.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1990 @@ +# Persian translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-03-14 15:29+0000\n" +"Last-Translator: Hamed Nemati \n" +"Language-Team: Persian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "" + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "" + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "مشخصه‌ها" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "در حال به‌هنگام‌سازی..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "به‌هنگام‌سازی کامل شد" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "مسیر" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "در حال بارگذاری..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "" + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "تغییر نام" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "نام جدید:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "" + +#: ui/changes.py:321 +msgid "No" +msgstr "" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "انگلیسی" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "" + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "نوع مایم" + +#: ui/action.py:338 +msgid "Finished" +msgstr "" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - پایان یافته" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "اندازه‌" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "" + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "ویرایش..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "جدید..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "اطلاعات نسخه" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "" + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "مخزن" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/fi.po rabbitvcs-0.15.0.5/po/fi.po --- rabbitvcs-0.13.1/po/fi.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/fi.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1990 @@ +# Finnish translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-09-02 20:14+0000\n" +"Last-Translator: Jani Välimaa \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Toimita" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Lisää" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "" + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "" + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "" + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Polku" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Laajennus" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Ladataan..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "" + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Vie" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Viesti" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Nimeä uudelleen" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Uusi nimi:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Valitse hakemisto" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "kohde" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Valitse tiedosto" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Tallenna nimellä..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revisio" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Tekijä" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Lisää toimintoja..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Muuta" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Kyllä" + +#: ui/changes.py:321 +msgid "No" +msgstr "Ei" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Rivi" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Teksti" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Toiminto" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "" + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Luo paikkatiedosto" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Luodaan paikkatiedosto..." + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Luotiin paikkatiedosto" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "MIME-tyyppi" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Valmis" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Koko" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Luo hakemisto..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Kopioi..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Kopioi URL leikepöydälle" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Siirrä ..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Uusi sijainti:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "" + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "" + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "" + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "" + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/fr.po rabbitvcs-0.15.0.5/po/fr.po --- rabbitvcs-0.13.1/po/fr.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/fr.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2120 @@ +# French translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-12-01 23:05+0000\n" +"Last-Translator: Clyssandre \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "À l'instant" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "Il y a %d minute(s)" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i seconde" +msgstr[1] "%i secondes" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minute" +msgstr[1] "%i minutes" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i heure" +msgstr[1] "%i heures" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i jour" +msgstr[1] "%i jours" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i semaine" +msgstr[1] "%i semaines" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i mois" +msgstr[1] "%i mois" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i année" +msgstr[1] "%i années" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Debug" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Bugs" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Ouvrir un terminal" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Rafraîchir le statut" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Debug inversé" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Rétablir tout ce qu'on voit" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Invalider" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Forcer un appel à invalidate_extension_info()" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Ajouter un emblème" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Ajouter un emblème" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Mettre à jour" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Obtenir une copie de travail" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Mettre à jour" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Mettre à jour une copie de travail" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Envoyer" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Envoyer les modifications au dépôt." + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Navigateur de dépôt" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Navigateur de référentiel" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "Vérifier les modifications ..." + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "Vérifiez les modifications apportées au référentiel" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Menu des différences..." + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "Liste des options de comparaisons" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Voir les différences avec la base" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Voir les modifications faites sur un fichier" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Voir les différences entre les fichiers/dossiers" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Voir les différences entre deux fichiers" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Voir les différences par rapport à la révision précédente" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" +"Voir les modifications apportées à un fichier depuis le dernier changement" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Comparer avec la base" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Comparer des fichiers ou dossiers" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "Comparer les différences entre deux fichiers" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Comparer avec les révisions précédentes" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Voir le journal" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "Afficher les changements entre les chemins et les révisions" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Consulter le journal" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Montrer le journal d'information d'un fichier" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Ajouter" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "Ajouter au dépôt" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Ajouter à la liste de fichier ignorés" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Mettre à jour à la révision..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Mettre à jour un fichier vers une version précise" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Renommer..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Planifier le renommage d'un objet dans le dépôt" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Supprimer" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Planifier la suppression d'un objet dans le dépôt" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Rétablir" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Rétablir un objet à son état non modifié" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Résoudre" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Marquer un conflit sur un objet comme résolu" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Restaurer" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Restaurer un fichier manquant" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Relocalisation…" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Relocaliser votre copie de travail" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Obtenir le verrou..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Verrouiller localement un objet" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Relâcher le verrou..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Relâcher le verrou d'un objet" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Nettoyer" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Nettoyer votre copie de travail" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Exporter" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" +"Exporter une copie de travail ou un dépôt sans information de versionnage" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Créer un dépôt ici" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Créer un dépôt dans un dossier" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importer" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Importer un objet dans un dépôt" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Branch/tag..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Copier un objet vers un autre emplacement dans le dépôt" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Basculement..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Changer l'emplacement d'une copie de travail" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Fusion..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "Un assistant de fusion en étapes" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Annoter..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Annoter un fichier" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Créer un correctif..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" +"Crée un fichier diff unifié avec tous les changements que vous avez fait" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Appliquer le correctif..." + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "Applique un fichier diff unifié de la copie de travail" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Propriétés" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Consulter les propriétés d'un objet" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Aide" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Consulter l'aide" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Paramètres" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Consulter ou modifier les paramètres de RabbitVCS" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "À propos" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "À propos de RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Ouvrir" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Ouvrir un fichier" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Parcourir dans" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "Naviguez vers un fichier ou un dossier" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Rétablir la propriété" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Rétablir la propriété à son état d'origine" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Rétablir la propriété (récursive)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "Rétablir la propriété à son état d'origine (récursive)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Supprimer la propriété" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Supprimer cette propriété" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Supprimer cette propriété (récursive)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "Modifier les détails" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "Dupliquer" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "Branches" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "Tags" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "Distants" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Mise à jour..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Mise à jour terminée" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "Retour à la Révision" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "Retour en arrière..." + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "Annulation terminée" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Mettre à jour vers la révision" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Checkout" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "Mise à jour %s..." + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Checkout terminé" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Répertoire" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Extension" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Chargement..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "%d objet(s) trouvé(s)" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Exécution de la commande d'Ajout..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Ajout terminé" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "Ignorer les fichiers :" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "Tags" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "Tag" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "Nom:" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Révision :" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "Message:" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "Sauvegarder" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "Etiquetter" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "Date :" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "Êtes-vous sûr de vouloir supprimer %s ?" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "Ajouter un Tag" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "Détail du Tag" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Exporter - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "Les champs 'URL du dépôt' et 'chemin de destination' sont requis." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Exporter" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Exécution de la commande d'exportation..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Exportation terminée" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Appliquer le correctif" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Appliquer le correctif pour le repertoire..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Application du fichier correctif..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Fichier correctif appliqué" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "Gestionnaire de branches" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "Branches" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "Branche" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "Point de départ :" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "Conserver l'historique de l'ancienne branche" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "Ajouter une branche" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "Détail de la branche" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Date" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Message" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importation - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Le champ 'URL du dépôt' est requit." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Exécution de la commande d'importation..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Importation terminée" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "Le fichier ou répertoire demandé n'existe pas." + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Renommer" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nouveau nom :" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Le champ 'nouveau nom' est requit." + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Exécution de la commande de renommage..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Renommage terminé" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "État du texte" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "État de la propriété" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Exécution de la commande d'Envoi..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Envoi terminé" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "État" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "Voir une comparaison côte à côte du diff" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Exécution du test de fusion..." + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Test de fusion terminé" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Exécution de la commande de fusion" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Fusion terminée" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Fusionner" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "Auteur :" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"Une erreur s'est produite dans l'extension RabbitVCS de Nautilus. Merci de " +"contacter l'équipe RabbitVCS en précisant les détails de " +"l'erreur ci-dessous :" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Sélectionnez un dossier" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "vers" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Sélectionnez un fichier" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Enregistrer sous..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Êtes vous sur de vouloir continuer ?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "le(s) objet(s) sélectionné(s)" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "Ajouter un répertoire au dépot" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Exécution de la commande de rétablissement..." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Rétablissement terminé" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Les champs 'depuis' et 'URL' sont requis." + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Relocaliser" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Exécution de la commande de relocalisation..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Relocalisation terminée" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Révision" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Auteur" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Voir le diff unifié" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Comparaison côte à côte" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Exécution de la commande de résolution..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Résolution terminée" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Plus d'actions..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Changement" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Changement de propriété" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Oui" + +#: ui/changes.py:321 +msgid "No" +msgstr "Non" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Ouvrir depuis la première révision" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "Ouvrir depuis la seconde révision" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Impossible d'annoter le dossier" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Annoter - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Ligne" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Texte" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "Le champ 'depuis la révision' est requis." + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Journal - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/A" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Action" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Copier depuis le chemin" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Copier depuis la révision" + +#: ui/log.py:556 +msgid "Graph" +msgstr "Graphe" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Comparer avec la copie de travail" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Voir les différences entre les révisions" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Comparer avec la copie de travail" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Comparer les révisions" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "Comparer avec la révision précédente" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Montrer les différences entre les révisions" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Editer l'auteur..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Editer le message de journal..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Editer les propriétés de la révision..." + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Editer l'auteur" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Editer le message de journal" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Inconnu" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Anglais" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "Fichier de configuration :" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Sélectionnez un programme" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Êtes vous sur de vouloir nettoyer les chemins du dépôt ?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Chemins du dépôt nettoyés" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Êtes vous sur de vouloir nettoyer les messages précédents ?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Messages précèdents nettoyés" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" +"Êtes vous sur de vouloir nettoyer vos informations d'authentification ?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Informations d'authentification nettoyées" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "Impossible de récupérer les propriétés de la liste" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Vous devez spécifier un chemin de destination." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Branch/tag" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Exécution de la commande Branch/tag..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Branch/tag terminé" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Verrouillé" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Obtenir le verrou" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Exécution de la commande de verrouillage..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Verrouillage terminé" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "Le champ 'emplacement du dépôt' est requit." + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Basculement" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Exécution de la commande de basculement..." + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Basculement terminé" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Numéro" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Copie de travail" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "Dépôt :" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "Branche :" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Hôte :" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "Ajouter une ligne :" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Checkout - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Exécution de la commande Checkout..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "Gestionnaire de Dépôts à distance" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "Dépôts distants" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Nom" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "Hôte" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "URL du dépôt" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Créer un correctif" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "Le chemin indiqué n'est pas une copie de travail" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Création du fichier correctif" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Fichier correctif créé" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Propriétés - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Valeur" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Une erreur est survenue durant la sauvegarde de vos propriétés." + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Remarque : les modifications apportées aux propriétés sont appliquées " +"immédiatement. Vous pouvez vérifier et annuler les modifications en " +"utilisant le menu contextuel pour chaque élément.\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"Voulez-vous supprimer les propriétés sélectionnées de l'ensemble des " +"fichiers et des sous-répertoires\n" +"sous ce répertoire ?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "Le fichier n'est pas versionné" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Réservé" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "Impossible de définir une nouvelle valeur pour la propriété." + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" +"Vous devez définir un système de contrôle de versions en utilisant l'option -" +"-vcs [svn|git]" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Type MIME" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Terminé" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Terminé" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Message du journal" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Déverrouiller" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Exécution de la commande de déverrouillage..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Déverrouillage terminé" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Taille" + +#: ui/browser.py:326 +msgid "Select" +msgstr "Sélectionner" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Créer un dossier..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Copier vers..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Copier l'URL dans le presse-papier" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Déplacer vers..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Où voulez-vous copier la sélection ?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Nouvel emplacement :" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Où voulez-vous déplacer la sélection ?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Nettoyage..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Nettoyage terminé" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Dépôt créé avec succès" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Une erreur c'est produite durant la création du dépôt. Veuillez vérifier que " +"le répertoire est vide." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Propriétés pour:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" +"Les propriétés sélectionnées seront appliquées de manière récursive." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Supprimer les propriétés récursivement" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Éditer..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Nouveau..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Chemin :" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Charger/Rafraîchir" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL :" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "Un conflit a été trouvé dans le fichier suivant :" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Ajouter un message" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Détails du certificat" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Éditer les détails de la propriété" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "Veuillez saisir votre nom et email" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Nom du dossier" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Message" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Merci d'ajouter vos détails d'authentification" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "Merci de fournir vos fichier de certification ssl" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Messages précédents" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Êtes vous sur de vouloir supprimer %item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "Erreur RabbitVCS" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Accepter définitivement" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "Accepter le mien" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Accepter temporairement" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "Accepter le leur" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Appliquer la propriété récursivement" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Authentification" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "Annuler" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Vérifier le certificat" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Confirmation" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Créer un dossier…" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Confirmation de la suppression" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Refuser" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "E-mail :" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Empreinte :" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "Comment voulez-vous procéder ?" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Émetteur :" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Identifiant :" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "Merger manuellement" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "Nom et E-mail" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Mot de passe :" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Chemin :" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Messages précédents" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Propriété" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Propriété :" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "Erreur RabbitVCS" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Domaine:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "SSL Client Certification" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Sauvegarder l'authentification" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Changement du texte" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "Les objets seront envoyés à la corbeille." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Valide:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Valeur:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "Merger les modifications avec la branche locale" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "Récupérer" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "label" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Liens" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Information sur la version" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Auteurs :" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Remerciements :" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "Statut du contenu :" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" +"Ficher(s) affecté(s) (double-clic pour comparer avec la version de " +"base)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Tableau de révisions" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limite:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Journal" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Rafraîchir" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Consulter une révisions:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Stopper à la copie" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Nettoyage demandé....\n" +"\n" +"Commencer le nettoyage de la copie de travail ?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Authentification" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Messages du journal" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Options de journalisation" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "Mémoire occupée : " + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "Information complémentaire" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Programme utilisé pour comparer des fichiers" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "Historique des URL" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Parcourir..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Nettoyer vos informations d'authentification" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Activer les emblèmes" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Activer les attributs de fichier" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Activer les vérifications récursives des statuts" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Programmes externes" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Général" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "Git" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Langage:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Journalisation" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Niveau minimum à journaliser" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Nombre d'URL à retenir" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Nombre de messages à retenir" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "Actualiser les informations" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Données sauvegardées" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Afficher les outils de débogage de RabbitVCS" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "Afficher la nouvelle version à gauche" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" +"Le menu Déboger est utilisé pour diagnostiquer des problèmes avec RabbitVCS " +"elle-même" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Type:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Fichiers à verrouiller" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Merci de décrire pourquoi vous verrouillez ces fichiers" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Verrouiller les fichiers" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Tous sélectionner/déselectionner" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Voler le verrou" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Depuis la révision" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Vers la révision" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Annoter" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "Ignorer" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" +"Fichiers modifiés (double-clic pour comparer avec la version de base)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Envoyer vers :" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Montrer les fichiers non versionnés" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Messages de notification" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "URI distante :" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Copie de travail :" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Ajouter une nouvelle propriété" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Fermer cette boîte de dialogue." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Éditeur de propriété" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "Rafraîchir la liste de propriétés." + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Changer le dépôt de votre copie de travail" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Depuis :" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Vers :" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Options" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "Mettre à jour le Dépôt local" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Révision" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Omettre les externes" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Récursif" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Message d'importation" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Dépôt" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Inclure les fichiers ignorés" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Depuis l'URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Depuis: (URL et révision à fusionner)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Gamme de révision" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Vers: (URL et révision à fusionner)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "Fusionner depuis l'URL" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Copie de travail" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Choisissez cette méthode si vous avez effectué des changements sur une " +"branche et que vous souhaitez fusionner ces changements avec une autre " +"branche." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Choisissez cette méthode si vous souhaitez fusionner deux branches " +"différentes dans votre copie de travail." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignorer l'ascendance" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Assistant de fusion" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Fusionner une gamme de révisions" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Fusionner deux arbres différents" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Enregistrer seulement la fusion" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Consulter le journal" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Tester la fusion" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Utilisez le journal de dialogue pour sélectionner la/les révision(s) que " +"vous souhaitez fusionner. Ou écrivez la/les révision(s) manuellement, " +"séparée(s) par des virgules. Vous pouvez spécifier une gamme de révision par " +"un tiret.\n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"Pour fusionner toute les révisions, laissez le champ vide." + +#~ msgid "Completed" +#~ msgstr "Terminé" + +#~ msgid "(no author)" +#~ msgstr "(pas d'auteur)" + +#~ msgid "Switch Details" +#~ msgstr "Détails du basculement" + +#~ msgid "Create copy from" +#~ msgstr "Créer une copie depuis" + +#~ msgid "Program used to browse repositories" +#~ msgstr "Programme utilisé pour parcourir les dépôts" + +#~ msgid "Show new version on the right side" +#~ msgstr "Afficher la nouvelle version sur le coté droit" + +#~ msgid "Update Depth" +#~ msgstr "Mise à jour en profondeur" + +#~ msgid "Added" +#~ msgstr "Ajouté" + +#~ msgid "Copied" +#~ msgstr "Copié" + +#~ msgid "Deleted" +#~ msgstr "Supprimé" + +#~ msgid "Restored" +#~ msgstr "Restauré" + +#~ msgid "Reverted" +#~ msgstr "Revert effectué" + +#~ msgid "Failed Revert" +#~ msgstr "Revert échoué" + +#~ msgid "Resolved" +#~ msgstr "Résolu" + +#~ msgid "Skipped" +#~ msgstr "Passé" + +#~ msgid "Updated" +#~ msgstr "À jour" + +#~ msgid "External" +#~ msgstr "Externe" + +#~ msgid "Modified" +#~ msgstr "Modifié" + +#~ msgid "Replaced" +#~ msgstr "Remplacé" + +#~ msgid "Changed" +#~ msgstr "Changé" + +#~ msgid "Annotated" +#~ msgstr "Annoté" + +#~ msgid "Unlocked" +#~ msgstr "Déverrouillé" + +#~ msgid "Failed Lock" +#~ msgstr "Impossible de verrouiller" + +#~ msgid "Failed Unlock" +#~ msgstr "Impossible de déverrouiller" + +#~ msgid "Inapplicable" +#~ msgstr "Inapplicable" + +#~ msgid "Unchanged" +#~ msgstr "Inchangé" + +#~ msgid "Missing" +#~ msgstr "Manquant" + +#~ msgid "Obstructed" +#~ msgstr "Bloqué" + +#~ msgid "Merged" +#~ msgstr "Réuni" + +#~ msgid "Conflicted" +#~ msgstr "En conflit" diff -Nru rabbitvcs-0.13.1/po/he.po rabbitvcs-0.15.0.5/po/he.po --- rabbitvcs-0.13.1/po/he.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/he.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1990 @@ +# Hebrew translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-02-09 10:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Hebrew \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "שליחה" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "הוספה" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "הוספה אל רשימת ההתעלמות" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "" + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "מחיקה" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "פתור" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "שחזור" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "ניקיון" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "ייבוא" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "" + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "פתיחה" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "סייר אל" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "מעדכן..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "העדכון הושלם" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "נתיב" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "סיומת" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "בטעינה..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "נמצאו %d פריטים" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "מריץ פקודת הוספה..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "ההוספה הסתיימה" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "ייצוא - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "ייצוא" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "מריץ פקודת ייצוא..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "ייצוא הושלם" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "תאריך" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "הודעה" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "ייבוא - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "שדה כתובת המקור נדרש." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "מריץ פקודת ייבוא..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "ייבוא הסתיים" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "שנה שם" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "שדה השם הינו הכרחי" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "מריץ פקודת שינוי שם..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "שינוי השם הושלם" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "מצב טקסט" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "מצב הגדרה" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "מרית פקודת שליחה..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "שליחה הושלמה" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "בחירת ספרייה" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "אל" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "בחירת קובץ" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "מקם מחדש" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "מריץ פקודת מיקום מחדש..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "המיקום מחדש הסתיים" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "מהדורה" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "יוצר" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "מריץ פקודת פתור..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "כן" + +#: ui/changes.py:321 +msgid "No" +msgstr "" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "לא ניתן לכתוב הערה לספרייה" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "הערה - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "שורה" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "טקסט" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "פעולה" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "אנגלית" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "בחירת תוכנה" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "האם אתה בטוח שברצונך למחוק את נתיבי המאגר שלך?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "נתיבי המאגר נמחקו" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "האם אתה בטוח שברצונך למחוק את ההודעה הקודמת שלך?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "ההודעה הקודמת נמחקה" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "האם אתה בטוח שבצרונך למחוק את נתוני האימות שלך?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "נתוני האימות נמחקו" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "יש לספק נתיב יעד." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "נעול" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "נעל" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "מריץ פקודת נעילה..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "נעילה הסתיימה" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "יצירת תיקון" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "הנתיב שניתן אינו העתק פועל" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "יוצר קובץ תיקון..." + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "" + +#: ui/action.py:338 +msgid "Finished" +msgstr "הסתיים" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - הסיים" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "מנקה..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "הניקיון הסתיים" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "" + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "" + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "" + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "הצגת דיווח" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/hr.po rabbitvcs-0.15.0.5/po/hr.po --- rabbitvcs-0.13.1/po/hr.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/hr.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2021 @@ +# Croatian translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-04-10 08:37+0000\n" +"Last-Translator: Vedran Miletić \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i sekunda" +msgstr[1] "%i sekunda" +msgstr[2] "%i sekundi" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minuta" +msgstr[1] "%i minute" +msgstr[2] "%i minuta" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i sat" +msgstr[1] "%i sati" +msgstr[2] "%i sati" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i dan" +msgstr[1] "%i dana" +msgstr[2] "%i dana" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i tjedan" +msgstr[1] "%i tjedana" +msgstr[2] "%i tjedana" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i mjesec" +msgstr[1] "%i mjeseci" +msgstr[2] "%i mjeseci" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i godina" +msgstr[1] "%i godina" +msgstr[2] "%i godina" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Pronađi grešku" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Greške" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Otvori komandni prozor" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Osvježi status" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Pronađi greške u povratku" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Povrati na staro sve što pronađeš" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Učini nevažećim" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Prinudno pozovi invalidate_extension_info()" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Dodaj oznaku" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Dodaje oznaku ikone" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Preuzmi..-" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Preuzmi radnu kopiju" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Ažuriraj" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Obnovi radnu kopiju" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Pohrani" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Pohrani izmjene u skladište" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Preglednik skladišta" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Pregledaj stablo skladišta" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "Provjeri izmjene..." + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "Provjeri izmjene napravljene u skladištu" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Izbornik razlika..." + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "Popis opcija usporedbe" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Prikaži razliku prema osnovi" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Pogledaj izmjene datoteke" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Pogledaj razlike između datoteka/mapa" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Pogledaj razliku između dvije datoteke" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Pogedaj razliku od prošle inačice" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "Pogledaj izmjene u datoteci od zadnje promjene" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Usporedi s osnovnom" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "Usporedi s osnovom koristeći usporedni alat (jedan do drugog)" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Usporedi datoteke/mape" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "Usporedi razlike između dvije stavke" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Usporedi s prethodnom inačicom" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "Usporedi s prošlom revizijom" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Pokaži promjene..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "Prikaži promjene između staza i revizija" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Prikaži dnevnik" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Pokazuje informacije iz dnevnika za datoteku" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Dodaj" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "Rasporedi stavke za dodavanje u skladište" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Dodaj na listu zanemarenih" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Obnovi na reviziju..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Obnavlja datoteku na određenu reviziju" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Promijeni ime..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Priloži stavku za promjenu imena u skladištu" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Obriši" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Pripremi stavku kako bi se obrisala iz skladišta" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Vrati izvorno" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Vrati na staro stavku - poništi promjene" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Razriješi" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Označi razriješenom stavku u sukobu" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Vrati" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Vrati nedostajeće" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Premjesti..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Premjesti radnu kopiju na drugi poslužitelj" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Zaključaj..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Lokalno zaključava stavke" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Oslobodi..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Otključaj stavku" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Očisti" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Očisti radnu kopiju" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Izvoz…" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "Izvezi radnu kopiju ili skladište bez informacije o verzijama" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Ovdje napravi skladište" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Napravi skladište u mapi" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Uvezi" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Uvezi stavku u skladište" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Grana/oznaka..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Kopiraj stavku na drugo mjesto unutar skladišta" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Zamijeni..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Zamijeni sidrište radne kopije u skladištu" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Stopi..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "Čarobnjak s koracima za stapanje" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Označi..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Dodaj bilješke datoteci" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Napravi zakrpu..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "Napravi objedinjenu datoteku razlika sa svim vašim promjenama" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Primjeni zakrpu..." + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "Primijenjuje datoteku objedinjenih razlika na radnu kopiju" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Svojstva" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Pogledaj svojstva stavke" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Pomoć" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Pogledaj pomoć" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Postavke" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Pogledaj ili promijeni RabiitVCS postavke" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "O programu" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "O RabiitVCS programu" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Otvori" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Otvori datoteku" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Pregledaj" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "Pregledaj datoteku ili mapu" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Poništi promjene svojstva" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Vrati vrijednost svojstva na originalnu" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Poništi promjene svojstva (poniruće)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "Vrati vrijednost svojstva na originalnu (poniruće)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Obriši svojstvo" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Obriši ovo svojstvo" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Obriši ovo svojstvo (poniruće)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "Zanemari predmet po imenu" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "Zanemari stavku prema nastavku" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Ažuriram..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Ažuriranje završeno" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Ažuriraj na inačicu" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Preuzmi" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Preuzimanje završeno" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Staza" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Proširenje" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Učitavanje..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Pronađeno %d stavaka" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Dodavanje..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Završeno dodavanje" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revizija:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Izvoz - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "URL skladišta i odredišna staza su obavezna polja." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Izvoz" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Izvoz u tijeku..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Izvoz završen" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Primijeni zakrpu" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Primijeni zakrpu na mapu..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Primjena zakrpe..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Zakrpa primijenjena" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Datum" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Poruka" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Uvezi - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "URL skladišta je obavezno polje." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Izrada uvoza u tijeku..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Završen uvoz" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Promijeni naziv" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Novo ime:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Polje novog imena je obavezno" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Promjena naziva u tijeku..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Promjena naziva završena" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Status teksta" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Status svojstva" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Pohranjivanje u tijeku..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Pohrana završena" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Status" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "Pogedaj razliku usporedno" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Testiranje stapanja" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Završen test stapanja" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Izvršavanje stapanja" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Stapanje završeno" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Stopi" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"Dogodila se greška u RabbitVCS Nautilus proširenju. Molimo javite RabbitVCS timu detalje greške:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Odaberi mapu" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "do" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Odaberi datoteku" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Spremi kao..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Da li sigurno želite nastaviti?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "odabrana(e) stavka(e)" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "Mapa je dodana u skladište" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Izvršavanje vraćanja...." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Vraćanje završeno" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Polja url-ova su obavezna." + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Premjesti" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Izvršava se premještanje..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Završeno premještanje" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Inačica" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Autor" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Vidi ukupnu razliku" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Usporedi jedno do drugog" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Izvršavanje razriješavanja..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Razriješavanje završeno" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Više akcija..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Promijeni" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Promjena svojstva" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Da" + +#: ui/changes.py:321 +msgid "No" +msgstr "Ne" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Otvori iz prve revizije" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "Otvori iz druge revizije" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Ne možete označiti mapu" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Označi - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Redak" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Tekst" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "Polje inačice treba sadržavati broj" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Dnevnik - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "Nije primjenjivo" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Akcija" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Kopiraj sa staze" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Kopiraj iz inačice" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Pogledaj razliku u odnosu na radnu kopiju" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Pogledaj razliku između inačica" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Usporedi s radnom kopijlom" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Usporedi inačice" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Pogledaj razlike između revizija" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Uredi autora..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Uredi poruku dnevnika..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Uredi svojstva revizije..." + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Uredi autora" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Uredi poruku dnevnika" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Napoznato" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Engleski" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Odaberite program" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Da li ste sigurni da želite očistiti staze skladišta?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Skladišne staze očišćene" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Da li se sigruni da želite očistiti vaše prethodne poruke?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Prethodne poruke očišćene" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Da li sigurno želite očistiti vaše autentikacijske podatke?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Autentikacijski podaci očišćeni" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "U nemogućnosti pribaviti popis svojstava" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Trebate odabrati odredišnu stazu." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Grana/oznaka" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Izrada grane/oznake" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Završena izrada grane/oznake" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Zaključano" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Zaključaj" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Zaključavanje..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Zaključano" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "Lokacija skladišta je obavezno polje." + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Zamijeni" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Zamijena u tijeku" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Zamjena izvršena" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "najnovije" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Broj" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Radna verzija" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Poslužitelj" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Preuzimanje - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Preuzimanje u tijeku..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Naziv" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Izradi zakrpu" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "Odabrana staza nije radna kopija" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Izrada zakrpe..." + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Zakrpa napravljena" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Svojstva - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Vrijednost" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Snimanje svojstava nije uspjelo." + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Napomena: promjene svojstava se primjenjuju odmah. Možete provjeriti " +"i poništiti promjene koristeći skočni izbornik za svaku stavku.\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"Želite li obrisati označena svojstva iz svih datatoteka \n" +"i poddirektorija u ovoj mapi?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "Datoteka nije pod sustavom kontrola verzija." + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Rezervirano" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "Nije moguće postaviti novu vrijednost stvojstva." + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Mime tip" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Završeno" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Završeno" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Komentar za dnevnik" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Otključaj" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Otključavanje u tijeku..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Otključavanje završeno" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Veličina" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Napravi mapu..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Kopiraj u..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Kopiraj URL u spremnik" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Premjesti..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Gdje želite kopirati odabrano?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Nova lokacija:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Gdje želite premjestiti odabrano?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Čišćenje..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Završeno čišćenje" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Skladište uspješno napravljeno" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Dogodila se pogreška prilikom kreiranja skladišta. Provjerite da li je " +"odabrana mapa prazna." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Svojstva za:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Odabrana svojstva biti će primijenjena ponirući." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Obriši svojstva ponirući" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Uredi..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Novo..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL staza:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Osvježi" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Dodaj poruku" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Detalji o certifikatu" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Uredi vrijednost svojstva" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Ime mape" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Poruka" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Molim dopunite svojim autentikacijskim podacima" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "Molimo, postavite dateteku s ssl certifikatom" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Prethodne poruke" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Da li sigurno želite obrisati %item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "RabbitVCS greška" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Prihvati za stalno" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Prihvati za ovaj put" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Primijeni svojstvo ponirući" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Prijava" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Provjeri certifikat" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Potvrda" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Izradi mapu..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Potvrda brisanja" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Uskrati" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Otisak prsta:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Izdavač:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Login:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Zaporka:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Putanja:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Prethodne poruke" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Svojstvo" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Svojstvo:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "RabbitVCS greška" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Područje:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "SSL Client Certification" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Spremi autentikaciju" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Promjena teksta" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "Stavke će biti biti prebačeni u smeće" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Ispravno:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Vrijednost:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Poveznice" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Informacija o verziji" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autori:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Zahvale:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "Datoteka(e) promjene (dvoklik za usporedbu s osnovom)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Tablica inačica" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Ograničenje:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Dnevnik" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Osvježi" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Prikazuje inačice:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Zaustavi se na kopiranju" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Potrebno je čišćenje...\n" +"\n" +"Da li želite pokrenuti čišćenje?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Prijava korisnika" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Poruke dnevnika" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Mogućnosti dnevnika" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Program za usporedbu datoteka" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "URL Povijest" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Pregledaj..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Izbriši podatke za prijavu korisnika" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Omogući oznake" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Omogući svojstva datoteka" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Omogući poniruću provjeru statusa" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Vanjski programi" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Općenito" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Jezik:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Pisanje dnevnika" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Najmanja razina logiranja" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Broj zapamćenih URL-ova" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Broj spremljenih poruka" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Spremljeni podaci" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Prikaži RabbitVCS alate za traženje grešaka (debugging)" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "Debug izbornik se koristi za traženje grešaka unutar RabbitVCSa" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Tip:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Datoteke za zaključavanje" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Molim opišite zašto zaključavate ove datoteke" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Zaključaj datoteke" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Označi sve / Makni sve oznake" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Preuzmi lokote" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Od inančice" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Do inačice" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Pribilježi" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "Promijenjene datoteke (dvoklik za usporedbu s osnovom)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Pohrani u:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Prikaži datoteke bez verzije" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Obavijesne poruke" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "Udaljeni URI:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Radna kopija:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Dodaj novo svojstvo" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Zatvori dijalog." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Editor za svojstva" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "Osvježi popis svojstava." + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Promijeni skladište za radnu kopiju" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Od:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Do:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Mogućnosti" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Inačica" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Preskoči vanjska skladišta" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Ponirući" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Uvoz poruke" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Skladište" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Uključi zanemarene datoteke" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Od URL-a" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Do: (URL i inačica za stapanje)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Raspon inačica" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Do: (URL i inačica za stapanje)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL od kojeg stapamo" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Radna kopija" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Odaberite ovu metodu ako imate neke promjene u grani i želite stopiti svoje " +"promjene s drugom granom." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Odaberite ovu metodu ako želite stopiti dvije različite grane u vašu radnu " +"kopiju." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Zanemari porijeklo" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Pomoćnik stapanja" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Stopi raspon inačica" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Stopi dva različita stabla" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Samo zabilježi stapanje" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Prikaži dnevnik" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Test stapanja" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Koristite dnevnik za odabir revizija koje želite stopiti. Možete i upisati " +"revizije odvojene zarezima, a raspon revizija je moguće upisati koristeći " +"crticu '-'. \n" +"\n" +"Primjer: 4-7,9,11,15-HEAD\n" +"\n" +"Za stapanje svih revizija, polje ostavite nepopunjeno." diff -Nru rabbitvcs-0.13.1/po/hu.po rabbitvcs-0.15.0.5/po/hu.po --- rabbitvcs-0.13.1/po/hu.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/hu.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2020 @@ +# Hungarian translation of rabbit-vcs +# Copyright (C) 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the rabbit-vcs-package. +# Laszlo Csordas , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbit-vcs 0.13.3 v01\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-06-22 09:46+0000\n" +"Last-Translator: csola48 \n" +"Language-Team: hungarian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" +"X-Poedit-Country: HUNGARY\n" +"X-Poedit-Language: Hungarian\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i mp" +msgstr[1] "%i mp" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i perc" +msgstr[1] "%i perc" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i óra" +msgstr[1] "%i óra" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i nap" +msgstr[1] "%i nap" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i hét" +msgstr[1] "%i hét" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i hónap" +msgstr[1] "%i hónap" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i év" +msgstr[1] "%i év" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Nyomkövetés" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Program hiba" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "revert" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Frissített állapot" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Nyomkövetés visszafelé" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Minden látható visszavonása" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Érvénytelenítés" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Egy érvénytelen kiterjesztés információ lehívásának kényszerítése" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Jelkép hozzáadása" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Egy jelkép hozzáadása" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Ellenőrzés..." + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Munkapéldány ellenőrzése" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Frissítés" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Munkapéldány frissítése" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Beküldés" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Módosítás beküldése a tárolóba" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Tároló böngészés" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Tároló fa böngészése" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "Módosítások ellenőrzése..." + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "Tárolóhoz készített módosítások ellenőrzése" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Összehasonlító menü..." + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "Összehasonlító lista beállítások" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Összehasonlító nézet a munkapéldánnyal" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Fájlhoz készített módosítás nézete" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Összehasonlító nézet fájlok/dossziék között" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Összehasonlító nézet két fájl között" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Összehasonlító nézet az előző revízióval" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "Egy fájl módosítások megnézése az utolsó változás óta" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Összehasonlítás a bázissal" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "Összehasonlítás a bázissal a párhuzamos összehasonlító eszközzel" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Fájl/dosszié összehasonlítása" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "Különbségek összehasonlítása két tétel között" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Összehasonlítás az előző revízióval" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" +"Összehasonlítás az előző revízió használatával a párhuzamos összehasonlító " +"eszközzel" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Változások mutatása..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "Változások mutatása az útvonal és a revízió között" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Napló mutatása" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Fájl napló információ mutatása" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Hozzáadás" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "Jegyzett tételek hozzáadása a tárolóhoz" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Hozzáadás a mellőzött fájl listához" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Revízió frissítése..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Egy fájl frissítése speciális revízióhoz" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Átnevezés..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Jegyzett tételek lesznek átnevezve a tárolóban" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Törlés" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Jegyzett tételek törölve lesznek a tárolóból" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Visszavonás" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Egy tétel nem módosított állapotának visszavonása" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Feloldás" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Egy konfliktusos tétel megoldottként való megjelölése" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Visszaállítva" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Elveszett tétel visszatöltése" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Áthelyez..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Munkapéldány áthelyezése" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Zárás..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Helyi zárolt tételek" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Nyitás..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Egy tétel kinyitása" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Tisztítás" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Munkapéldány tisztítása" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Export..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "Egy munkapéldány vagy tároló verziókezelésen kívűli információval" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Tároló készítése ide" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Tároló készítése ebben a dossziéban" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Import" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Egy tétel importálása a tárolóba" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Branch/tag..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Egy tétel másolása másik helyre a tárolóban" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Kapcsoló..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Munkapéldány helyének megváltoztatása a tárolóban" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Egyesítés..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "Egyesítő varázsló" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Jegyzet..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Jegyzet egy fájlhoz" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Hibajavítás készítése..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" +"Egységes összehasonlító fájl készítése, amely minden változást tartalmaz" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Hibajavítás alkalmazása..." + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "Egységes összehasonlító fájl alkalmazása a munkapéldányban" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Tulajdonságok" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Egy tétel tulajdonságainak nézete" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Súgó" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Súgó nézet" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Beállítások" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "RabbitVCS beállítások nézete vagy cseréje" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "Névjegy" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "RabbitVCS névjegye" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Megnyit" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Fájl megnyitása" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Böngészés" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "Fájl vagy dosszié böngészése" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Visszavont tulajdonság" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Eredeti tulajdonságok visszaállítása" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Tulajdonságok visszaállítása (rekurzívan)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "Ezen tulajdonság eredeti állapotba való visszaállítása (rekurzívan)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Tulajdonság törlése" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Ezen tulajdonság törlése" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Ezen tulajdonság törlése (rekurzívan)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "Mellőzött tétel fájl név szerint" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "Mellőzött tétel fájl kiterjesztés szerint" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Frissítés..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Frissítés befejezve" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Revízió frissítése" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Ellenőrzés" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Ellenőrzés befejezve" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Útvonal" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Kiterjesztés" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Betöltés..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Talált %d elemet" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Hozzáadás parancs fut..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Hozzáadás befejezve" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revízió:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Export - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "A tároló URL és a végcél útvonal mezőket igényelnek." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Export" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Exportálás parancs fut..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Exportálás befejezve" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Hibajavítás alkalmazása" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Hibajavítás alkalmazása a könyvtárra" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Hibajavító fájl alkalmazása..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Hibajavító fájl alkalmazva" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Dátum" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Üzenet" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Import - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Tároló URL mező igényelt" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Importálás parancs fut..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Importálás befejezve" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Átnevezés" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Új név:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Új név mező szükséges" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Átnevezés parancs fut..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Átnevezés befejezve" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Szöveg állapot" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Tulajdonság állapot" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Beküldés parancs fut..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Beküldés befejezve" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Állapot" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "Összehasonlító nézet, mint párhuzamos összehasonlítás" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Egyesítés teszt fut" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Egyesítés teszt befejezve" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Egyesítés parancs fut" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Egyesítés befejezve" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Egyesítés" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"Egy hiba történt a RabbitVCS Nautilus kiterjesztésben. Vegye fel a " +"kapcsolatot RabbitVCS team a hiba alábbi részletes " +"leírásával:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Dosszié választása" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "eddig" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Fájl választása" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Mentés másként…" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Biztos, hogy folytatni akarja?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "a kiválasztott tétel/ek/" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "Dosszié hozzáadása a tárolóhoz" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Visszavonás parancs fut" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Visszavonás befejezve" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Az URL tartomány határainak megadása szükséges." + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Áthelyez" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Áthelyezés parancs fut..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Áthelyezés befejezve" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revízió" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Szerző" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Egységes összehasonlító nézet" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Párhuzamos összehasonlítás" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Feloldás parancs fut..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Feloldás befejezve" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Több lépés..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Változás" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Tulajdonság változása" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Igen" + +#: ui/changes.py:321 +msgid "No" +msgstr "Nem" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Az első revízió megnyitása" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "A második revízió megnyitása" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Nem lehet jegyzetet fűzni a könyvtárhoz" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Jegyzet - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Sor" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Szöveg" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "A revízió mező egész szám kell legyen" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Napló - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/A" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Esemény" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Másolás az útvonalról" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Másolás a revízióból" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Összehasonlító nézet a munkapéldánnyal" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Összehasonlító nézet revíziók között" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Összehasonlítás a munkapéldánnyal" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Revíziók összehasonlítása" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Változások mutatása két revízió között" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Szerző szerkesztése..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Napló üzenet szerkesztése..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Revízió tulajdonságok szerkesztése..." + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Szerző szerkesztése" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Napló üzenet szerkesztése" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Ismeretlen" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "angol" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Egy program választása" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Biztos, hogy akarja törölni a tároló útvonalakat?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Tároló útvonal törölve" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Biztos, hogy akarja törölni a korábbi üzeneteket?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Előző üzenet törölve" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Biztos, hogy akarja törölni a hitelesítési információt?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Hitelesítési információ törölve" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "Tulajdonság lista nem állítható helyre" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Meg kell adni a végcél útvonalat." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Branch/tag" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Branch/tag parancs fut..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Branch/tag parancs befejezve" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Zárva" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Zárolás" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Zárás parancs fut..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Zárás befejezve" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "Tároló helye mező igényelt" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Kapcsoló" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Kapcsoló parancs fut..." + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Kapcsoló parancs befejezve" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Szám" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Munkapéldány" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Host:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Ellenőrzés - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Ellenőrzés parancs fut..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Név" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Hibajavítás készítése" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "A megadott útvonal nem a munkapéldányé." + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Hibajavító fájl készítése..." + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Hibajavító fájl elkészítve" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Tulajdonságok - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Érték" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Tulajdonságok mentésénél probléma adódott." + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Figyelem: a tulajdonságok változása azonnal megtörténik. Megnézheti " +"és visszavonhatja a változás használatát minden tételre va menüben.\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"Törölni akarja a kiválasztott tulajdonságot minden fájlnál és alkönyvtárban\n" +"ezen könyvtárban?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "Ez a fájl nincs verzió kontroll alatt." + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Fenntartott" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "Nem engedélyezett a tulajdonság új értéke." + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Mime típus" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Befejezve" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Befejezve" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Napló bejegyzés" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Nyitás" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Nyitás parancs fut..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Nyitás befejezve" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Méret" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Dosszié létrehozása..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Másolás..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "URL másolása a vágólapra" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Áthelyezés..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Hová akarja másolni a kijelölést?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Új hely:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Hová akarja áthelyezni a kijelölést?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Tisztítás..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Tisztítás befejezve" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Tároló sikeresen elkészítve" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "Hiba a tároló készítésekor. Ellenőrizze, hogy a dosszié üres." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Tulajdonságok ehhez:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Kiválasztott tulajdonságok rekurzívan lesznek használva." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Rekurzív tulajdonságok törlése" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Szerkesztés..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Új..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Útvonal" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Betöltés/Frissítés" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Üzenet hozzáadása" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Tanúsítvány részletei" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Tulajdonság részleteinek szerkesztése" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Dosszié neve" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Üzenet" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Adja meg az Ön azonosítóit" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "Kérjük adja meg az Ön SSL igazoló fájlját" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Korábbi üzenetek" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Akarja törölni a/z/ %item% tételt?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "RabbitVCS Error" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Mindig elfogad" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Egyszer elfogad" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Tulajdonság megadása rekurzívan" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Hitelesítés" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Tanúsítvány ellenőrzése" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Megerősítés" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Dosszié készítése..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Megerősítés törlése..." + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Visszautasít" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Ujjlenyomat:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Kibocsájtó:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Felhasználó név:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Jelszó:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Útvonal:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Előző üzenet" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Tulajdonság" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Tulajdonság:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "RabbitVCS hiba" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Övezet:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "SSL kliens igazolás" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Hitelesítés mentése" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Szöveg változás" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "A tétel a kukába kerül." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Érvényeség:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Érték:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Link" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Verzió információ" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Szerzők:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Köszönet:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" +"Érintett fájl/ok/ (kettős klikkantással összehasonlítás a bázissal)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Revíziós tábla" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Határ:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Napló" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Frissítés" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Revíziók mutatása:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Másolás megállítása" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Tisztítást igényelt....\n" +"\n" +"Kezdődhet a munkapéldány tisztítása?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Azonosítás" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Napló üzenetek" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Naplózási beállítások" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Program a fájlok összehasonlításához" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "URL előzmények" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Böngészés..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Az Ön azonosítási információinak törlése" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Jelképek engedélyezve" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Fájl attributomok engedélyezve" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Rekurzív állapotellenőrzés engedélyezve" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Külső programok" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Általános" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Nyelv:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Naplózás" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Minimális naplóbejegyzés" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Megjegyzett URL-ek száma" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Megjegyzett üzenetek száma" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Mentett adat" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "RabbitVCS nyomkövető eszköz mutatása" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "A nyomkövetés menü a problémák diagnózisára a RabbitVCS-t használja" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Típus:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Zárolt fájlok" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Írja le, miért akarja zárolni ezeket a fájlokat?" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Zárolt fájlok" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Kiválasztás / Összes kiválasztás" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Zárolások ellopása" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Revíziótól" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Revízióig" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Jegyzet" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" +"Változott fájlok (kettős klikkantással összehasonlítás a bázissal)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Beküldés" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Verziókezelésen kívüli fájlok mutatása" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Értesítés" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "Távoli URI:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Munkapéldány:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Egy új tulajdonság hozzáadása" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Párbeszéd bezárása." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Tulajdonság szerkesztő" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "Tulajdonságok listájának frissítése." + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Tároló cseréje az Ön munkapéldányhoz" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Innen:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Eddig:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Opciók" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revízió" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Külső tárolók kihagyása" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Rekurzív" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Import üzenet" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Tároló" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Mellőzött fájlokat tartalmaz" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Ettől az URL-től" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Innen: (URL és revízió egyesítve)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Revíziós terület" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Eddig: (URL és revízió egyesítve)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL egyesítve innen" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Munkapéldány" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Válassza ezt a módszert, ha Önnek sok változása van a branchban és " +"egyesíteni kívánja a módosításokat egy másik branchcsal." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Válassza ezt a módszert, ha két különböző branchot kíván egyesíteni a " +"munkapéldányában." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Eredet mellőzése" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Egyesítés segéd" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Egy revíziós terület egyesítése" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Két különböző fa egyesítése" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Csak rögzítése az egyesítésnek" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Napló mutatása" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Egyesítés teszt" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"A kiválasztott revíziók egyesítéséhez használja a napló bejegyzést vagy írja " +"ki a revíziókat kézzel azokat vesszővel elválasztva. Egy tartomány " +"megadásához kötőjelet használhat.\n" +"\n" +"Például: 4-7,9,11,15-HEAD\n" +"\n" +"Az összes revízió egyesítéséhez hagyja üresen a szövegdobozt." diff -Nru rabbitvcs-0.13.1/po/it.po rabbitvcs-0.15.0.5/po/it.po --- rabbitvcs-0.13.1/po/it.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/it.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2112 @@ +# Italian translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-10-26 11:05+0000\n" +"Last-Translator: timendum \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i secondo" +msgstr[1] "%i secondi" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minuto" +msgstr[1] "%i minuti" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i ora" +msgstr[1] "%i ore" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i giorno" +msgstr[1] "%i giorni" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i settimana" +msgstr[1] "%i settimane" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i mese" +msgstr[1] "%i mesi" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i anno" +msgstr[1] "%i anni" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Debug" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Bugs" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Apri Shell" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Aggiorna Stato" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Debug Ripristino" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Ripristina tutto ciò che vedi" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Invalida" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Forza una chiamata a invalidate_extension_info()" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Aggiungi icona" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Aggiungi un'icona" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Checkout..." + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Preleva una Copia di Lavoro" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Aggiorna" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Aggiorna la Copia di Lavoro" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Commit" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Invia le modifiche al Repository" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Sfoglia Repository" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Sfoglia l'albero del repository" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "Controlla modifiche..." + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "Controlla modifiche fatte nel repository" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Menu Differenze..." + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "Visualizza opzioni di confronto" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Visualizza differenze con la base" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Visualizza le modifiche fatte al file" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Visualizza differenze tra file/cartelle" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Visualizza differenze tra due file" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Visualizza le differenze con la revisione precedente" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "Visualizza le modifiche fatte al file dall'ultimo cambiamento" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Confronta con la base" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "Confronta con la base affiancando le finestre" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Confronta file/cartelle" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "Confronta le differenze tra due oggetti" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Compara con la versione precedente" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "Confronta con la revisione precedente affiancando le finestre" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Visualizza modifiche..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "Visualizza modifiche tra percorsi e revisioni" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Visualizza Log" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Visualizza il file log" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Aggiungi" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "Schedula oggetti da aggiungere al repository" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Aggiungi in ignora" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Aggiorna alla revisione..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Aggiorna il file alla specifica revisione" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Rinonima..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Schedula un oggetto da essere rinonimato nel repository" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Cancella" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Schedula un oggetto da essere cancellato dal repository" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Ripristina" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Ripristina gli oggetti nel loro stato non modificato" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Risolvi" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Segna un oggetto in conflitto come risolto" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Ripristina" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Ripristina oggetto mancante" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Ricolloca..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Ricolloca la tua copia di lavoro" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Blocca..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Blocca gli oggetti localmente" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Sblocca..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Sblocca l'oggetto" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Pulisci" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Pulisci la copia di lavoro" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Esporta..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" +"Esporta la copia di lavoro o repository senza le informazioni di versione" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Crea un Repository qua" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Crea un Repositori in una cartella" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importa" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Importa un oggetto in un repository" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Branch/tag..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Copia un oggetto in un altra parte del repository" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Scambia..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Cambia la locazione del repository della copia di lavoro" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Merge..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "Procedura guidata per il merge" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Annota..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Annota un file" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Crea Patch..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "Crea un file unico con le differenza di tutte le modifiche fatte" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Applica Patch..." + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "Applica il file unico con le differenza alla copia di lavoro" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Proprieta" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Visualizza le proprieta di un oggetto" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Aiuto" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Visualizza aiuto" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Opzioni" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Visualizza o cambia le opzioni di RabbitVCS" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "Informazioni su" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "Informazioni su RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Apri" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Apri un file" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Sfoglia" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "Sfoglia file o cartella" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Ripristina proprietà" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Ripristina questa proprietà con il suo stato originale" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Ripristina proprietà (ricorsivo)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "Ripristina questa proprietà con il suo stato originale (ricorsivo)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Cancella proprietà" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Cancella questa proprietà" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Cancella questa proprietà (ricorsivo)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "Ignora oggetto dal nome file" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "Ignora oggetto dall'estensione" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Aggiornamento in corso..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Aggiornamento completato" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Aggiorna alla Revisione" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Checkout" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Checkout completato" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Percorso" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Estensione" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Caricamento..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Trovati %d oggetti" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Esecuzione del comando Aggiungi..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Aggiunta completata" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revisione:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Esporta - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" +"I campi URL e percorso di destinazione del repository sono entrambi " +"obbligatori." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Esporta" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Esecuzione del comando di Esportazione..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Esportazione Completata" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Applica Patch" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Applica Path Alla Cartella" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Applica Patch al File..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Patch al File Applicata" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Data" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Messaggio" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importa - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Il campo URL del repository è obbligatorio." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Esecuzione del comando di Importazione..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Importazione completata" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Rinomina" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nuiovo Nome:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Il campo nuovo nome è obbligatorio." + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Esecuzione del comando Rinomina..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Rinomina Completata" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Stato Testo" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Stato Proprieta" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Esecuzione del comando Commit..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Commit Completato" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Status" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "Visualizza le differenze affiancate" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Esecuzione del Merge Test..." + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Test del Merge Completato" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Esecuzione del comando Merge..." + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Merge Completato" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Merge" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"Si è verificato un errore nell'estensione RabbitVCS Nautilus. Contatta il RabbitVCS team con i dettagli dell'errore specificati sotto:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Seleziona una Cartella" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "a" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Seleziona un File" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Salva con nome..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Sei sicuro di voler continuare ?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "oggetti selezionati" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "Aggiungi una cartella al repository" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Esecuzione del comando di Ripristino..." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Ripristino completato" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "I campi da e url sono entrambi obbligatori" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Ricolloca" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Esecuzione del comando di Ricollocamento" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Ricollocamento Completato" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revisione" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Autore" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Visualizza differenze unite" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Confronta affiancato" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Esecuzione del comando Risolvi..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Risoluzione Completata" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Altre azioni..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Modifica" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Cambia Proprietà" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Si" + +#: ui/changes.py:321 +msgid "No" +msgstr "No" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Apri dalla prima revisione" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "Apri dalla seconda revisione" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Non posso annotare una cartella" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Annota - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Linea" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Testo" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "Il campo da revisione deve essere un intero" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Log - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/A" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Azione" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Copia dal Percorso" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Copia dalla Revisione" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Visualizza le differenze con la copia di lavoro" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Guarda differenze tra le versioni" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Compara con la copia locale" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Confronta le revisioni" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Visualizza le modifiche tra le revisioni" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Modifica autore..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Modifica messaggio di log..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Modifica le proprietà della revisione..." + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Modifica autore" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Modifica messaggio di log" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Sconosciuto" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Inglese" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Seleziona un programma" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Sei sicuro di voler pulire i percorsi del tuo repository?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Percorsi del repository puliti" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Sei sicuro di voler cancellare i tuoi messaggi precedenti?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Messaggi precedenti cancellati" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" +"Sei sicuro di voler cancellare le tue informazioni di autenticazione?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Informazioni di autenticazione cancellate" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "Impossibile caricare le proprietà" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Devi specificare un percorso di destinazione" + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Branch/tag" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Esecuzione del comando Branch/tag..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Branch/tag completato" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Bloccato" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Blocca" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Esecuzione del comando Blocca..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Blocco Completato" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "La locazione del repository è un campo obbligatorio" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Scambia" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Esecuzione del comando di Scambio..." + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Scambio completato" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Numero" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Copia lavoro" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Host:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Checkout - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Esecuzione del comando Checkout..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Nome" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Crea Patch" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "Il percorso non è la copia di lavoro" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Crea Patch File..." + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Patch File Creato" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Proprieta - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Valore" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Errore nel salvataggio delle proprietà" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Note: le modifiche alle proprietà sono applicate subito. Puoi " +"rivedere o tornare indietro usando il menu contestuale per ogni elemento.\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"Vuoi cancellare la proprietà selezionata da tutti i file e sotto-cartelle\n" +"sotto questa cartella?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "File senza controllo versione" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Riservato" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "Impossibile inserire valore della proprietà" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Tipo Mime" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Finito" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Finiti" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Messaggio di log" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Sblocca" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Esecuzione del comando Sblocca..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Sblocco completato" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Dimensione" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Crea cartella" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Copia in..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Copia l'URL nella clipboard" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Sposta in..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Dove vuoi copiare la selezione?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Nuova Destinazione:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Dove vuoi muovere la selezione?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Pulizia in corso..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Pulizia Completata" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Repository creato con successo" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"C'è stato un errore nella creazione del repository. Verifica che la cartella " +"sia vuota." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Proprieta per:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" +"Le proprietà selezionate non possono essere applicate ricorsivamente." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Cancella le proprietà ricorsivamente" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Modifica..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Nuovo..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Path" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Carica/Aggiorna" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Aggiungi Messaggio" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Dettagli del Certificato" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Modifica Proprieta Dettagli" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Nome Cartella" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Messggio" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Aggiungi i tuoi dettagli di autenticazione" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "File SSL di certificazione necessario" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Messaggi Precedenti" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Sei sicuro di voler cancellare %item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "Errore RabbitVCS" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Accetta Sempre" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Accetta una Volta" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Applica le proprietà ricorsivamente" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Autenticazione" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Controlla Certificato" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Conferma" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Crea cartella..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Cancella Conferma" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Nega" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Fingerprint:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Emittente" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Login:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Password:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Percorso:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Messaggi Precedenti" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Proprieta" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Proprieta:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "Errore RabbitVCS" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Dominio:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "SSL Client Certificatione" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Salva Autenticazione" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Testo Modificato" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "Gli oggetti verranno inviati al cestino." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Valido:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Valore:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Links" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Informazioni della Versione" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autori:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Grazie:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "File Modificati (doppio click per confrontarli con la base)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Tabella Revisioni" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limiti:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Log" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Aggiorna" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Revisioni:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Ferma su copia" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Richiesta di pulizia....\n" +"\n" +"Iniziare una pulizia nella copia di lavoro?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autenticazione" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Messaggi del log" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Opzioni di Log" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Programma usato per confrontare i file" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "Cronologia URL" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Sfoglia..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Elimina i dati di autenticazione" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Abilita icone" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Abilita gli attributi dei file" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Abilita il controllo ricorsivo degli stati" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Programmi esterni" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Generale" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Lingua:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Logging" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Livello minimo per log" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Numero di URL da ricordare" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Numero di messaggi da ricordare" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Dati salvati" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Mostra gli strumenti di debugging di RabbitVCS" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "Il menu di debug è usato per diagnosticare problemi con RabbitVCS" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Tipo:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "File da bloccare" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Descrivi perchè vuoi bloccare questi files" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "File Bloccati" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Selezione / Deseleziona tutti" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Ruba il bloccaggio" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Dalla Revisione" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Alla Revisione" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Annota" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "File Modificati (doppio click per confrontarli con la base)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Commit a:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Visualizza i file non versionati" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Messaggi di Notifica" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "URI remota:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Copia di Lavoro:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Aggiungi una nuova proprietà." + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Chiudi la finestra." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Modifica delle proprietà" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "Aggiorna la lista delle proprietà." + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Cambia il repository della tua copia di lavoro" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Da:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "A:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Opzioni" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revisione" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Ometti esterni" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Ricorsivo" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Importa Messaggio" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Repository" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Includi file ignorati" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Da URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Da: (URL e revisione a merge)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Intervallo Revisioni" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "a: (URL e revisione a merge)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL sorgente da effettuare il Merge" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Copia di Lavoro" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Seleziona questo metodo se hai fatto qualche cambiamento al branch e vuoi " +"effettuare un merge tra le tue modifiche e un altro branch." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Seleziona questo metodo se vuoi effettuare un merge tra due differenti " +"branch nella tua copia di lavoro." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignora Antenati" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Assistente al Merge" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Effettua un Merge per un intervallo di revisioni" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Effettua un merge di due differenti alberi" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Registra solo il merge" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Visualizza Log" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Testa il Merge" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Usa la finestra del log per selezionare le revisioni su cui vuoi effettuare " +"il merge. Oppure scrivi le revisioni manualmente, \n" +"ognuna separata da una virgola. Pure specificare un intervallo con un " +"trattino.\n" +"\n" +"Esempio: 4-7,9,11,15-HEAD\n" +"\n" +"Per eseguire il merge di tutte le revisioni, lascia il box vuoto." + +#~ msgid "Completed" +#~ msgstr "Completato" + +#~ msgid "Create copy from" +#~ msgstr "Crea copia da" + +#~ msgid "Program used to browse repositories" +#~ msgstr "Programma usato per sfogliare i repository" + +#~ msgid "Destination:" +#~ msgstr "Destinazione:" + +#~ msgid "Deleted" +#~ msgstr "Cancellato" + +#~ msgid "Copied" +#~ msgstr "Copiato" + +#~ msgid "Added" +#~ msgstr "Aggiunto" + +#~ msgid "Restored" +#~ msgstr "Ripristinato" + +#~ msgid "Resolved" +#~ msgstr "Risolto" + +#~ msgid "Updated" +#~ msgstr "Aggiornato" + +#~ msgid "External" +#~ msgstr "Esterno" + +#~ msgid "Modified" +#~ msgstr "Modificato" + +#~ msgid "Replaced" +#~ msgstr "Sostituito" + +#~ msgid "Changed" +#~ msgstr "Cambiato" + +#~ msgid "Skipped" +#~ msgstr "Saltato" + +#~ msgid "Conflicted" +#~ msgstr "Conflitto" + +#~ msgid "Unchanged" +#~ msgstr "Invariato" + +#~ msgid "Missing" +#~ msgstr "Mancante" + +#~ msgid "(no author)" +#~ msgstr "(nessun autore)" + +#~ msgid "Show new version on the right side" +#~ msgstr "Visualizza la nuova versione nel lato destro" + +#~ msgid "Update Depth" +#~ msgstr "Aggiorna Profondita" + +#~ msgid "Failed Unlock" +#~ msgstr "Sblocco fallito" + +#~ msgid "Failed Lock" +#~ msgstr "Blocco fallito" + +#~ msgid "Inapplicable" +#~ msgstr "Inapplicabile" + +#~ msgid "Annotated" +#~ msgstr "Appuntato" + +#~ msgid "Unlocked" +#~ msgstr "Sbloccato" + +#~ msgid "Switch Details" +#~ msgstr "Dettagli Scambio" + +#~ msgid "Reverted" +#~ msgstr "Ripristina..." + +#~ msgid "Failed Revert" +#~ msgstr "Ripristino fallito" + +#~ msgid "Merged" +#~ msgstr "Merged" + +#~ msgid "Obstructed" +#~ msgstr "Bloccato" diff -Nru rabbitvcs-0.13.1/po/ja.po rabbitvcs-0.15.0.5/po/ja.po --- rabbitvcs-0.13.1/po/ja.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/ja.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2085 @@ +# Japanese translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-12-02 16:25+0000\n" +"Last-Translator: yamafuji mitsugu \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i 秒" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i分" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i時間" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i日" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i週" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%iヶ月" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i年" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "デバッグ" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "バグ" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "シェルを開く" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "状態を更新" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "無効にする" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "invalidate_extension_info() 呼び出しを強制する" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "エンブレムを追加" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "エンブレムを追加" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "作業コピーをチェックアウト" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "更新" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "作業コピーを更新" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "コミット" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "レポジトリへの変更をコミット" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "ファイルに対する変更を見る" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "ログを表示" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "ファイルのログ情報を見る" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "追加" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "無視リストに追加" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "特定のリビジョンへ更新..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "特定のリビジョンへ更新..." + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "リネーム..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "レポジトリへのアイテムのリネームを予定する" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "削除" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "レポジトリへのアイテムの削除を予定する" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "元に戻す" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "未変更の状態に戻す" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "解消" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "競合するアイテムを解決済みにマークする" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "復元" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "再配置..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "作業コピーを再配置" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "ロックを取得..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "ローカルでアイテムをロック" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "ロックを開放..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "アイテム上でロックを開放" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "クリーンアップ" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "作業コピーをクリーンアップ" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "バージョン情報無しで,作業コピーまたはレポジトリをエクスポートする" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "ここにレポジトリを作成" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "フォルダ内にレポジトリを作成" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "インポート" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "レポジトリにアイテムをインポート" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "ブランチ/タグ..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "レポジトリ内の別の場所にアイテムをコピーする" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "切り替え..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "作業コピーのレポジトリの場所を変更する" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "マージ..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "マージウィザード" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "注釈..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "ファイルに注釈" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "属性" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "アイテムのプロパティを見る" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "ヘルプ" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "ヘルプの閲覧" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "設定" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "RabbitVCSの設定" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "RabbitVCSについて" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "RabbitVCSについて" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "開く" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "参照" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "更新中..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "更新完了" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "特定のリビジョンへ更新" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "チェックアウト" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "チェックアウト完了" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "パス" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "拡張" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "ロード中..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "%d個のアイテムが見つかりました" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "追加中..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "追加完了" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "エクスポート - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "レポジトリのURLとチェックアウト先の両方の入力が必要です." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "エクスポート" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "エクスポート中..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "エクスポート完了" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "ブランチ 詳細" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "日付" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "メッセージ" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "インポート - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "レポジトリURLを入力してください" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "インポート中..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "インポート完了" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "リネーム" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "新しい名前:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "新しい名前を入力してください" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "リネームを実行中..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "リネームの完了" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "テキストの状態" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "属性の状態" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "コミット中" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "コミット完了" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "状態" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "マージテスト中" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "マージテスト完了" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "マージ中" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "マージ完了" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "マージ" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "フォルダを選択" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "to" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "ファイルを選択" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "本当に続けますか?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "選択されたアイテム" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "元に戻しています" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "元に戻しました" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "FROMフィールドとURLフィールドの両方に入力してください" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "再配置" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "再配置中..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "再配置完了" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "リビジョン" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "作者" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "解消中..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "解消完了" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "はい" + +#: ui/changes.py:321 +msgid "No" +msgstr "" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "ディレクトリに注釈できません" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "注釈 - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "行" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "テキスト" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "元リビジョン番号は整数でなければなりません" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "ログ - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/A" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "アクション" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "パスからコピー" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "リビジョンからコピー" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "不明" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "英語" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "プログラムを選択" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "本当にレポジトリのパスをクリアしますか?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "レポジトリのパスはクリアされました" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "本当にログメッセージを削除しますか?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "ログメッセージは削除されました" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "本当に認証情報を削除しますか?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "認証情報は削除されました" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "送り先パスを設定してください." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "ブランチ/タグ" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "ブランチ/タグ コマンドを実行中..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "ブランチ/タグ の完了" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "ロック" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "ロックを取得" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "ロック中..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "ロック完了" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "レポジトリの場所を入力してください" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "切り替え" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "切り替え中..." + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "切り替え完了" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "最新" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "ホスト:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "チェックアウト - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "チェックアウト中..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "名前" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "与えられたパスはワーキングコピーではありません" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "修正を作成完了" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "プロパティ - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "値" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Mimeタイプ" + +#: ui/action.py:338 +msgid "Finished" +msgstr "完了" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - 完了" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "ロック解除" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "ロック解除中" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "ロック解除完了" + +#: ui/browser.py:89 +msgid "Size" +msgstr "" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "クリーンアップ中..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "クリーンアップ完了" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "レポジトリの作成に成功しました" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "リポジトリ作成中にエラーが発生しました.フォルダが空であるか確認してください." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "属性:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "編集..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "新規..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/パス:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "メッセージの追加" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "証明書の詳細" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "プロパティの詳細を編集" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "メッセージ" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "認証の詳細を追加してください" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "以前のメッセージ" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "本当に%iつのアイテムを削除しますか%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "今後受け入れる" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "一度だけ受け入れる" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "認証" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "証明書をチェックする" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "確認" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "削除の確認" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "拒否" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "フィンガープリント:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "発行者:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "ログイン:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "パスワード:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "以前のメッセージ" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "属性" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "属性:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "領域:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "認証を保存する" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "その(それらの)アイテムはゴミ箱へ送られます" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "有効:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "値:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "関連リンク" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "バージョン情報" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "著者:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "謝辞:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "リビジョン一覧" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "期限:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "ログ" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "更新" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "表示しているリビジョン:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "コピーが発生したら停止" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"クリーンアップが要求されました....\n" +"\n" +"作業コピーをクリーンアップしますか?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "認証" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "ログメッセージ" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "ログオプション" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "ファイルの比較に使用するプログラム" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "URL履歴" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "閲覧..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "認証履歴を削除" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "エンブレムを有効にする" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "ファイル属性を有効にする" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "再帰的な状態チェックを有効にする" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "外部プログラム" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "一般" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "言語:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "ログ" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "次のレベル以上を記録する" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "記録するURLの数" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "記録するメッセージの数" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "データの保存" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "種類:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "ロックすファイル" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "ファイルをロックする理由を入力してください" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "ロックするファイル" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "全て選択/全て非選択" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "ロックを横取りする" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "元リビジョン" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "先リビジョン" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "注釈" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "コミット先:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "バージョン管理外のファイルを表示する" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "通知メッセージ" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "作業コピーのレポジトリを変更する" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "元:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "先:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "オプション" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "リビジョン" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "外部参照を除外する" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "再帰的" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "メッセージをインポートする" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "レポジトリ" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "除外ファイルを含める" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "元URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "元: (マージするURLとリビジョン)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "リビジョンの範囲" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "先: (マージするURLとリビジョン)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "マージ元のURL" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "作業コピー" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "ブランチに変更を加え,それを別のブランチに変更をマージする場合,このメソッドを選択してください." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "2つの異なるブランチを作業コピーにマージする場合,このメソッドを選択してください." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "系統情報を無視する" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "マージアシスタント" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "リビジョンの範囲をマージ" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "異なる2つのツリーをマージ" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "マージのみ記録する" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "ログを表示" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "マージをテストする" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"マージしたいリビジョンの選択にログダイアログを利用する,もしくは,マージするリビジョンをコンマで区切って入力してください.リビジョンの範囲はハイフンで指定" +"することができます.\n" +"\n" +"例: 4-7,9,11,15-HEAD\n" +"\n" +"すべてのリビジョンをマージするには,入力ボックスを空のままにしてください." + +#~ msgid "Completed" +#~ msgstr "完了" + +#~ msgid "(no author)" +#~ msgstr "(作者なし)" + +#~ msgid "Switch Details" +#~ msgstr "詳細の切り替え" + +#~ msgid "Create copy from" +#~ msgstr "次の場所からコピー" + +#~ msgid "Program used to browse repositories" +#~ msgstr "レポジトリの閲覧に使用するプログラム" + +#~ msgid "Show new version on the right side" +#~ msgstr "新しいバージョンを右側に表示する" + +#~ msgid "Destination:" +#~ msgstr "送り先:" + +#~ msgid "Update Depth" +#~ msgstr "更新" + +#~ msgid "Added" +#~ msgstr "追加" + +#~ msgid "Copied" +#~ msgstr "コピー" + +#~ msgid "Deleted" +#~ msgstr "削除" + +#~ msgid "Restored" +#~ msgstr "復元" + +#~ msgid "Reverted" +#~ msgstr "元に戻す" + +#~ msgid "Failed Revert" +#~ msgstr "元に戻せませんでした" + +#~ msgid "Resolved" +#~ msgstr "解消" + +#~ msgid "Skipped" +#~ msgstr "スキップ" + +#~ msgid "Updated" +#~ msgstr "更新" + +#~ msgid "External" +#~ msgstr "外部" + +#~ msgid "Modified" +#~ msgstr "変更" + +#~ msgid "Replaced" +#~ msgstr "置換" + +#~ msgid "Changed" +#~ msgstr "変更" + +#~ msgid "Annotated" +#~ msgstr "注釈" + +#~ msgid "Unlocked" +#~ msgstr "ロック解除" + +#~ msgid "Failed Lock" +#~ msgstr "ロック失敗" + +#~ msgid "Failed Unlock" +#~ msgstr "ロック解除失敗" + +#~ msgid "Inapplicable" +#~ msgstr "適用不可" + +#~ msgid "Unchanged" +#~ msgstr "変更無" + +#~ msgid "Missing" +#~ msgstr "紛失" + +#~ msgid "Obstructed" +#~ msgstr "妨害" + +#~ msgid "Merged" +#~ msgstr "マージ" + +#~ msgid "Conflicted" +#~ msgstr "競合" diff -Nru rabbitvcs-0.13.1/po/nb.po rabbitvcs-0.15.0.5/po/nb.po --- rabbitvcs-0.13.1/po/nb.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/nb.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2027 @@ +# Norwegian Bokmal translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-03-14 08:38+0000\n" +"Last-Translator: Arne \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i sekund" +msgstr[1] "%i sekunder" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minutt" +msgstr[1] "%i minutter" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i time" +msgstr[1] "%i timer" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i dag" +msgstr[1] "%i dager" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i uke" +msgstr[1] "%i uker" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i måned" +msgstr[1] "%i måneder" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i år" +msgstr[1] "%i år" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Avlus" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Feil" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Åpne skall" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Oppfrisk status" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Avlus tilbakestilling" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Tilbakestill alt den ser" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Innvalider" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Tving et invalidate_extension_info() kall" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Legg til emblem" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Legg til et emblem" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Sjekk ut..." + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Sjekk ut en arbeidskopi" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "RVCS Oppdater" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Oppdatert en arbeidskopi" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "RVCS Send inn" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Send inn endringer til et arkiv" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Arkivleser" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Bla gjennom ett arkivtre" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "Sjekk for endringer..." + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "Sjekk for endringer i arkivet" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Differansemeny..." + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "Liste over sammenlikningsopsjoner" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Vis en differanse i forhold til basen" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Vis endringene gjort i en fil" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Vis differansen mellom filer/mapper" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Vis differansen mellom to filer" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Vis differanse i forhold til tidligere revisjon" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "Vis endringene i en fil siden den ble sist lagret" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Sammenlikne med basen" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" +"Sammenlikne med basen ved bruk av verktøy for å sammenlikne ved siden av " +"hverandre" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Sammelikn filer/mapper" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "Sammenlikn differansen mellom to elementer" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Sammenlikne med forrige versjon" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" +"Sammenlikne med tidligere revisjon ved bruk av verktøy for å sammenlikne ved " +"siden av hverandre" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Vis endringer..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "Vis endringer mellom stier og revisjoner" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Vis logg" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Vis en fils loggeinformasjon" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Legg til" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "Tidsplanlegg elementer som skal legges til i arkivet" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Legg til ignoreringsliste" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Oppdater til revisjon..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Oppdatert en fil til en spesifikk revisjon" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Endre navn..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Tidsplanlegg et element for omnavning i arkivet" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Slett" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Tidsplanlegg et element for sletting fra arkivet" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Tilbakestill" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Tilbakestill et element til dens uendrere tilstand" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Løs" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Marker et element i konflikt som løst" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Gjenopprett" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Gjenopprett et manglende element" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Omplasser..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Omplasser din arbeidskopi" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Ta lås..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Lås elementer lokalt" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Frigi lås..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Frigi lås på et element" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Rensk opp" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Rensk opp en arbeidskopi" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Eksporter..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "Eksporter en arbeidskopi eller et arkiv uten versjonsinformasjon" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Lag et arkiv her" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Lag et arkiv i en mappe" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Import" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Importer et element til et arkiv" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Gren/merke..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Kopier et element til en annen plassering i arkivet" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Flytt..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Flytt plasseringen av en arbeidskopi i arkivet" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Flett..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "En hjelper for fletting" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Kommenter..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Kommenter en fil" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Lag lapp (patch)..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "Lager en forent differansefil med alle endringene du har gjort" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Anvend lapp (patch)..." + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "Anvend en samlet differansefil på arbeidskopien" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Egenskaper" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Vis egenskapene til et element" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Hjelp" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Vis hjelp" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Innstillinger" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Vis eller endre RabbitVCS innstillinger" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "Om" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "Om RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Åpne" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Åpne en fil" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Bla til" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "Bla til en fil eller mappe" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Tilbakestill egenskap" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Tilbakestill denne egenskapen til dens originale tilstand" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Tilbakestill egenskap (rekursivt)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" +"Tilbakestill denne egenskapen til dens originale tilstand (rekursivt)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Slett egenskap" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Slett denne egenskap" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Slett denne egenskapen" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "Ignorer element basert på filnavn" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "Ignorer element basert på filetternavn" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Oppdaterer..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Fullført oppdatering" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Oppdater til revisjon" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Sjekk ut" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Utsjekk fullført" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Sti" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Filetternavn" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Laster..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Funnet %d element(er)" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Kjører \"legg til\" kommando..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Fullført \"legg til\"" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revisjon:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Eksportert - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "ArkivURL og målsti er begge påkrevde felt." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Eksporter" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Kjører eksportkommando..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Fullført eksport" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Anvend lapp (patch)" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Anvend lapp (patch) på katalog..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Anvender lappefil (patch)..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Lappefil anvendt" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Dato" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Melding" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importer - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "ArkivURLfelt er påkrevet" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Kjører importkommando..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Import fullført" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Endre navn" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nytt navn:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Det nye navnefeltet er påkrevet." + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Kjører omnavningskommando..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Fullført omnavning" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Tekststatus" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Egenskapstatus" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Kjører innsendingskommando..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Fullført innsending" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Status" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "Vis differanse som en \"ved siden av hverandre\" sammenlikning" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Kjører flettetest" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Fullført flettingstest" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Kjører flettekommando" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Fullført fletting" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Flett" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"En feil oppstod i RabbitVCS-utvidelsen. Vennligst kontakt RabbitVCS team med feildetaljene under:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Velg en mappe" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "til" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Velg en fil" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Lagre som..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Er du sikker på at du vil fortsette?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "det/de valgte element" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "La til en mappe i arkivet" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Kjører tilbakestillkommando..." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Fullført tilbakestill" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Fra og til -URLfeltene er begge påkrevet." + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Omplasser" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Kjører omplasseringskommando..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Fullført ommplassering" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revisjon" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Opphavsmann" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Vis samlet differanse" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Sammenlikne ved siden av hverandre" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Kjører løs-kommando..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Fullfør løs" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Flere handlinger..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Endre" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Endre egenskap" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Ja" + +#: ui/changes.py:321 +msgid "No" +msgstr "Nei" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Åpne fra første revisjon" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "Åpne fra andre revisjon" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Kan ikke kommentere en katalog" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Kommenter - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Linje" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Tekst" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "\"Fra revisjon\" -feltet må være et heltall" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Logg - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "I/T" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Handling" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Kopier fra sti" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Kopier fra revisjon" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Vis differanse i forhold til arbeidskopi" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Vis differanse mellom revisjoner" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Sammenlikne med arbeidskopi" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Sammenlikne revisjoner" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Vis endringer mellom revisjoner" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Rediger forfatter..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Rediger loggemelding..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Rediger revisjonsegenskaper..." + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Rediger forfatter" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Rediger loggemelding" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Ukjent" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Engelsk" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Velg et program" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Er du sikker på at du vil nullstille arkivstien?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Arkivsti nullstilt" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Er du sikker på at du vil nullstille din forrige melding?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Forrige melding nullstilt" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Er du sikker på at du vil nullstille autentiseringsinformasjonen?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Autentiseringsinformasjonen nullstilt" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "Får ikke tak i egenskapsliste" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Du må oppgi en målsti." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Gren/merke" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Kjører gren/merke-kommando..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Fullført gren/merke" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Låst" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Lås" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Kjører låsekommando..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Fullført låsing" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "Arkivplasseringen er et påkrevet felt." + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Flytt" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Kjører flyttekommando..." + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Fullført flytting" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HODE" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Nummer" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Arbeidskopi" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Vert:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Sjekk ut - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Kjører utsjekkommando..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Navn" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Lag lapp (patch)" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "Den oppgitte stien peker ikke til en arbeidskopi" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Lager lappefil (patch)..." + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Lappefil (patch) laget" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Egenskaper - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Verdi" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Det oppstod et problem med lagring av egenskapene." + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Merknad: egenskapsendringer utføres umiddelbart. Du kan se over og " +"angre endringer vha. snarveimenyen på hvert element.\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"Ønsker du å slette valgte egenskaper fra alle filer og mapper\n" +"under denne mappen?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "Fila er ikke underlagt versjonskontroll." + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Reservert" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "Klarer ikke å sette ny verdi for egenskap." + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Mimetype" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Fullført" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - fullført" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Loggmelding" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Lås opp" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Kjører lås opp kommando..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Fullfør lås opp" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Størrelse" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Lag mappe..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Kopier til..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Kopier URL til utklippsbord" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Flytt til..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Hvor ønsker du å kopiere utvalget til?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Ny plassering" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Hvor ønsker du å flytte utvalget?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Rensker opp..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Opprensking fullført" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Arkiv vellykket opprettet" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"En feil oppstod ved opprettelse av arkiv. Sørg for at den oppgitte mappen er " +"tom." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Egenskaper for:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Valgte egenskaper vil bli anvendt rekursivt." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Slett egenskaper rekursivt" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Rediger..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Ny..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Sti:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Last/oppdater" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Legg til melding" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Sertifikatdetaljer" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Rediger egenskapsdetaljer" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Mappenavn" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Melding" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" +"Vennligst legg til dine autentiseringsdetaljer (identifikasjon)" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "Vennligst oppgi din ssl sertifikatfil" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Forrige melding" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Er du sikker på at du vil slette %item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "RabbitVCS feil" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Aksepter for alltid" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Aksepter en gang" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Anvend egenskap rekursivt" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Autentisering" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Sjekk sertifikat" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Bekreftelse" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Opprett mappe..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Slettebekreftelse" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Avvis" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Fingeravtrykk:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Utsteder:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Logg inn:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Passord:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Sti:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Tidligere meldinger" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Egenskap" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Egenskap:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "RabbitVCS feil" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Område:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "SSL klientsertifikat" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Lagre autentisering" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Tekstendring" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "Elementene vil bli sendt til søppeldunken." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Gyldig:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Verdi:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Lenker" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Versjonsinformasjon" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Forfattere:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Takk:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "Berørte fil(er) (dobbeltklikk for å sammenlikne med basen)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Revisjonstabell" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Grense:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Logg" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Oppdater" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Viser revisjoner:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Stopp ved kopi" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Opprensking forespurt...\n" +"\n" +"Start arbeidskopiopprensking?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autentisering" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Loggmeldinger" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Loggeopsjoner" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Program benyttet for å sammenlikne filer" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "URL historikk" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Bla gjennom..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Fjern all autentiseringsinformasjonen" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Muliggjør emblemer" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Muliggjør filattributter" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Muliggjør rekkursiv statussjekk" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Eksterne programmer" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Generelt" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Språk:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Logging" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Minimumsnivå for logging" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Antall URLer som huskes" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Antall meldinger som huskes" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Lagrede data" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Vis RabbitVCS sine avlusingsverktøy" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" +"Avlusingsmenyen benyttes for å diangostisere problemer med RabbitVCS selv" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Type:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Filer til låsing" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Vennligst beskriv hvorfor du låser disse filene" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Lås filer" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Velg/avvelg alt" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Stjel låser" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Fra revisjon" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Til revisjon" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Kommenter" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "Endrede filer (dobbeltklikk for å sammenlikne med basen)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Send inn til:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Vis ikke-versjonerte filer" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Varslingsmeldinger" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "Fjerntliggende URI:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Arbeidskopi:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Legg til en egenskap." + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Lukk dette dialogvindu." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Egenskpasredigering" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "Oppdatert egenskapslisten" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Endre arkiv for arbeidskopien" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Fra:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Til:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Alternativer" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revisjon" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Utelat eksterne" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Rekursiv" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Importmelding" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Arkiv" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Inkluder ignorerte filer" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Fra URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Fra: (URL og revisjon som skal flettes)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Revisjonsutvalg" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Til: (URL og revisjon som skal flettes)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL det skal flettes fra" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Arbeidskopi" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Velg denne metoden hvis du har gjort endringer i grenen og ønsker å flette " +"dine endringer med en annen gren." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Velg denne metoden hvis du ønsker å flette to forskjellige grener inn i din " +"arbeidskopi." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignorer stamfedre" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Fletteassistent" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Flett et utvalg av revisjoner" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Flett to forskjellige trær" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Kun marker fletting (ikke utfør)" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Vis logg" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Testflett" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Bruk loggknappen (til høyre for revisjonsutvalgsfeltet) til å velge " +"revisjonen du ønsker å flette. Eller skriv revisjonene manuelt, hver " +"separert med komma. Du kan spesifisere et revisjonsutvalg med en bindestrek. " +"\n" +"\n" +"Eksempel: 4-7,9,11,15-HEAD\n" +"\n" +"La boksen være tom for å flette alle revisjoner." + +#~ msgid "Deleted" +#~ msgstr "Slettet" + +#~ msgid "Copied" +#~ msgstr "Kopiert" diff -Nru rabbitvcs-0.13.1/po/nl.po rabbitvcs-0.15.0.5/po/nl.po --- rabbitvcs-0.13.1/po/nl.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/nl.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2026 @@ +# Dutch translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-12-09 15:20+0000\n" +"Last-Translator: Reinout van Schouwen \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" +"X-Poedit-Language: Dutch\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "nu net" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "%d minu(u)t(en) geleden" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i seconde" +msgstr[1] "%i seconden" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minuut" +msgstr[1] "%i minuten" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i uur" +msgstr[1] "%i uur" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i dag" +msgstr[1] "%i dagen" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i week" +msgstr[1] "%i weken" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i maand" +msgstr[1] "%i maanden" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i jaar" +msgstr[1] "%i jaar" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Debuggen" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Fouten" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Shell openen" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Verversingsstatus" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Debug-terugdraaien" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Alles in zicht terugdraaien" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Ongeldig maken" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Aanroep van invalidate_extension_info() afdwingen" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Embleem toevoegen" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Een embleem toevoegen…" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Uitchecken…" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Een werkversie uitchecken" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Updaten" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Een werkversie updaten" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Commit" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Aanpassingen committen in het repository" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "RabbitVCS SVN" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "RabbitVCS Git" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Bladeren door repository" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Een repository-boom doorbladeren" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "Controleren op aanpassingen…" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "Controleren op wijzigingen die aan het repository zijn gemaakt" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Diff-menu…" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "Lijst van vergelijkingsopties" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Diff ten opzichte van basis bekijken" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "De wijzigingen aan een bestand bekijken" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Diff tussen bestanden/mappen bekijken" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "De verschillen tussen twee bestanden bekijken" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Diff ten opzichte van eerdere revisie bekijken" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "De aanpassingen aan een bestand sinds de laatste wijziging bekijken" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Vergelijken met basis" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" +"Met basisversie vergelijken met behulp van naast-elkaar-vergelijkprogramma" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Bestanden/mappen vergelijken" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "De verschillen tussen twee items vergelijken" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Vergelijken met eerdere revisie" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" +"Vergelijken met eerdere revisie met behulp van naast-elkaar-" +"vergelijkprogramma" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Wijzigingen weergeven…" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "Wijzigingen tussen paden en revisies tonen" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Logboek tonen" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "De logboekinformatie over een bestand tonen" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Toevoegen" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "Items klaarzetten om toegevoegd te worden aan het repository" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Voeg toe aan negeer lijst" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Updaten naar revisie…" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Updaten naar een specifieke revisie" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Hernoemen…" + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Een item klaarzetten om hernoemd te worden in het repository" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Verwijderen" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Een item klaarzetten om verwijderd te worden uit het repository" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Terugdraaien" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Een item terugzetten naar zijn ongemodificeerde staat" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Oplossen" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Een item in conflict markeren als opgelost" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Terugzetten" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Een ontbrekend item herstellen" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Verhuizen…" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Uw werkversie verhuizen" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Blokkering verkrijgen…" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Items lokaal blokkeren" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Blokkering vrijgeven…" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Blokkering op een item vrijgeven" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Opruimen" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Werkversie opschonen" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Exporteren…" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" +"Een werkversie of repository exporteren zonder versiebeheer-informatie" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Hier een repository aanmaken" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Repository in een map aanmaken" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importeren" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Item importeren in een repository" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Branch/tag…" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Een item kopiëren naar een andere locatie in het repository" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Wisselen…" + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "De repository-locatie van een werkversie wijzigen" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Samenvoegen…" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "Een wizard met samenvoegstappen" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Annoteren…" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Een bestand annoteren" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Patch aanmaken…" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" +"Maakt een geünificeerd diff-bestand met al de wijzigingen die u gemaakt heeft" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Patch toepassen…" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "Past een geünificeerd diff-bestand toe op de werkversie" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Eigenschappen" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "De eigenschappen van een item bekijken" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Hulp" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Hulp weergeven" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Instellingen" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "RabbitVCS-instellingen bekijken of wijzigen" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "Over" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "Info over RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Open" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Bestand openen" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Bladeren naar" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "Naar een bestand of map navigeren" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Eigenschap terugdraaien" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Deze eigenschap terugdraaien naar haar oorspronkelijke staat" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Eigenschap terugdraaien (recursief)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" +"Deze eigenschap terugdraaien naar haar oorspronkelijke staat (recursief)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Eigenschap verwijderen" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Deze eigenschap verwijderen" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "Eigenschap verwijderen (recursief)" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Deze eigenschap verwijderen (recursief)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "Details bewerken" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "Eigenschapdetails tonen en bewerken" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "Repository initialiseren" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "Klonen" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "Fetch/Pull" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "Push" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "Branches" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "Tags" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "Item negeren per bestandsnaam" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "Item negeren per extensie" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Updaten..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Update is voltooid" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "Terugdraaien naar revisie" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "Terugdraaien…" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "Terugdraaien voltooid" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Updaten naar revisie" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Uitchecken" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "Uitchecken van %s…" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Uitchecken voltooid" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Pad" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Extensie" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Laden..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "%d item(s) gevonden" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Wordt toegevoegd..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Toevoegen klaar" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "Bestand negeren:" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "Tagbeheer" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "Tags" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "Tag" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "Name:" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revisie:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "Message:" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "Opslaan" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "Tagger:" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "Datum:" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "Wilt u %s echt verwijderen?" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "Tag toevoegen" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "Tagdetail" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Exporteren — %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "De repository URL en doel pad velden zijn beide verplicht." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Exporteren" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Wordt geëxporteerd..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Export is klaar" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Patch toepassen" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Patch op map toepassen..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Patchbestand toepassen..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Patchbestand toegepast" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "Branchbeheer" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "Branches" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "Branch" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "Startpunt:" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "Geschiedenis van oude branch behouden" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "Als actieve branch instellen" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "Branch toevoegen" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "Branchdetail" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Datum" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Boodschap" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "Uitvoeren Push-opdracht…" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "Push voltooid" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importeren — %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Het repository URL veld is verplicht." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Wordt geïmporteerd..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Importeren klaar" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "Het bestand of de map die werd gevraagd bestaat niet." + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Hernoemen" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nieuwe naam:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Het veld 'nieuwe naam' is verplicht." + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Uitvoeren rename-opdracht…" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Hernoemen voltooid" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Tekst-status" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Eigenschapsstatus" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Commit-opdracht uitvoeren…" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Commit voltooid" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Status" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "Diff als naast-elkaar-vergelijking bekijken" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Samenvoegtest draaien" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Samenvoegtest voltooid" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Bezig met uitvoeren van merge-opdracht" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Samenvoegen voltooid" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Samenvoegen" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "Auteur:" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"Er is een fout opgetreden in de RabbitVCS Nautilus-extensie. Neem contact op " +"met het RabbitVCS-team met de hieronder vermelde " +"foutdetails:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Selecteer een map" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "naar" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Selecteer een bestand" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Opslaan als…" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Weet je zeker dat je wil verdergaan?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "de geselecteerde item(s)" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "Map toegevoegd aan het repository" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Bezig met uitvoeren revert-opdracht…" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Terugdraaien voltooid" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "Uitvoeren van kloon-opdracht…" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "Klonen voltooid" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "De 'vanaf' en 'tot' url velden zijn beide verplicht." + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Verhuizen" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Uitvoeren relocate-opdracht…" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Verhuizen voltooid" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revisie" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Auteur" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Geünificeerde diff bekijken" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Naast elkaar vergelijken" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Bezig met uitvoeren resolve-opdracht…" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Oplossen voltooid" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Meer acties..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Verandering" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Eigenschap-wijziging" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Ja" + +#: ui/changes.py:321 +msgid "No" +msgstr "Nee" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Openen vanaf eerste revisie" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "Openen vanaf tweede revisie" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Kan een map niet annoteren" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Annoteren — %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Regel" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Tekst" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "De 'vanaf' revisie moet een integer zijn." + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Logboek — %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N.v.t." + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Actie" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Kopiëren van pad" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Kopiëren van revisie" + +#: ui/log.py:556 +msgid "Graph" +msgstr "Grafiek" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Diff ten opzichte van werkversie bekijken" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Diff tussen revisies tonen" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Vergelijken met werkversie" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Revisies vergelijken" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "Wijzigingen tonen ten opzichte van vorige revisie" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Wijzigingen tussen revisies tonen" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "Updaten naar deze revisie" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "Het geselecteerde pad updaten naar deze revisie" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Auteur bewerken…" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Logboekmelding bewerken…" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Revisie-eigenschappen bewerken…" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Auteur bewerken" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Logboekmelding bewerken" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Onbekend" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" +"Er is een fout opgetreden bij het communiceren met de statuscontroledienst." + +#: ui/settings.py:59 +msgid "English" +msgstr "Engels" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "Configuratiebestand:" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Selecteer een programma" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Weet u zeker dat u uw repositorypaden wilt wissen?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Repository paden gewist" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Weet u zeker dat u uw vorige berichten wilt wissen?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Vorige berichten gewist" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Weet u zeker dat u uw authenticatie-informatie wilt wissen?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Authenticatie-informatie gewist" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "Niet in staat eigenschappenlijst op te halen" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Een doel pad is verplicht." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Branch/tag" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Branch/tag wordt uitgevoerd..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Branch/tag is klaar" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Vergrendeld" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Vergrendelen" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Wordt vergrendeld..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Vergrendelen is klaar" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "De repository-locatie is een vereist veld." + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Wisselen" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Bezig met uitvoeren switch-opdracht…" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Wisselen voltooid" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Nummer" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Werkversie" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "Repository:" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "Branch:" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Hostcomputer:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "Regel toevoegen:" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Uitchecken — %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Uitvoeren checkout-opdracht…" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "Afstandrepository-beheer" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "Repository's op afstand" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Naam" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "Host" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "Repository-URL" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Patch aanmaken" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "Het gegeven pad is geen werk kopie" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Bezig met maken van patch-bestand…" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Patch-bestand aangemaakt" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Eigenschappen — %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Waarde" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Er trad een probleem op bij het opslaan van uw eigenschappen." + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Merk op: veranderingen aan eigenschappen worden direct doorgevoerd. U " +"kunt veranderingen herzien en ongedaan maken met behulp van het contextmenu " +"voor elk item.\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"Wilt u de geselecteerde eigenschappen van alle bestanden en submappen\n" +"onder deze map verwijderen?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "Bestand is niet onder versiebeheer" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Gereserveerd" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "Niet in staat nieuwe waarde voor eigenschap in te stellen." + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" +"U dient een versiecontrolesysteem op te geven met de optie --vcs [svn|git]" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Mime type" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Klaar" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - klaar" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Logboekmelding" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Ontgrendelen" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Bezig met uitvoeren unlock-opdracht…" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Unlock voltooid" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Grootte" + +#: ui/browser.py:326 +msgid "Select" +msgstr "Selecteren" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Map maken..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Kopiëren naar..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Locatie naar het klembord kopiëren" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Verplaatsen naar..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Waarheen wilt u de selectie kopiëren?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Nieuwe locatie:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Waarheen wilt u de selectie verplaatsen?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Wordt opgeruimd..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Opruimen voltooid" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Repository succesvol aangemaakt" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Er is een fout opgetreden bij het aanmaken van het repository. Zorg ervoor " +"dat de opgegeven map leeg is." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Eigenschappen voor:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Geselecteerde eigenschappen worden recursief toegepast." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Eigenschappen recursief verwijderen" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Bewerken..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Nieuw…" + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Pad:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Laden/verversen" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "Er is een conflict gevonden in het volgende bestand:" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Boodschap Toevoegen" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Certificaatdetails" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Eigenschapdetails bewerken" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "Voer naam- en e-maildetails in" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Mapnaam" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Bericht" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Gelieve uw authenticatiedetails toe te voegen" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "Geef alstublieft uw ssl certification-bestand" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Eerdere berichten" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Weet u zeker dat u %item% wilt " +"verwijderen?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "RabbitVCS-fout" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Voor altijd accepteren" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "Van mij accepteren" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Eenmalig accpeteren" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "Van hen accepteren" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Eigenschap recursief toepassen" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Authenticatie" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "Annuleren" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Certificaat controleren" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Bevestiging" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "Beslissing op conflictoplossing" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Map aanmaken…" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Verwijderen bevestigen" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Weigeren" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "E-mail:" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Vingerafdruk:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "Hoe wilt u dit afhandelen?" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Uitgever:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Aanmeldnaam:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "Handmatig samenvoegen" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "Naam en e-mail" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Wachtwoord:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Pad:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Vorige boodschappen" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Eigenschap" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Eigenschap:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "RabbitVCS-fout" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Omgeving:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "SSL-gebruikerscertificaat" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Authenticatie opslaan" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Tekstwijziging" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "De item(s) worden in de prullenbak gegooid." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Geldig:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Waarde:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "Informatie over pull" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "Wijzigingen samenvoegen in lokale branch" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "Pull" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "label" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Koppelingen" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Versie Informatie" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Auteurs:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Met dank aan:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "Inhoudstatus:" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "Eigenschapsstatus:" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "VCS:" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" +"Betrokken bestand(en) (dubbelklik om te vergelijken met basis)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Revisietabel" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limiet:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Logboek" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Verversen" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Getoonde revisies:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Op kopie stoppen" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Opschonen aangevraagd…\n" +"\n" +"Beginnen met opschonen van werkversie?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Authenticatie" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "Checkertype:" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "Configuratie-editor" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Logboekberichten" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Logboek-opties" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "Geheugengebruik: " + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "Andere informatie" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "Proces-ID:" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Programma voor bestandsvergelijking" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "URL-geschiedenis" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Bladeren…" + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Uw authenticatie-informatie wissen" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Emblemen inschakelen…" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Bestandskenmerken inschakelen" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Recursieve statuscontroles inschakelen" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Externe programma's" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Algemeen" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "Git" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Taal:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Logboek" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Minimumniveau voor loggen" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Het aantal te onthouden URLs" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Het aantal te onthouden berichten" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "Informatie verversen" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "Checker herstarten" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Opgeslagen data" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "RabbitVCS-debughulpprogramma's tonen" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "Nieuwe versie tonen aan de linkerkant" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "Statuschecker" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "Stopchecker" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" +"Het debugmenu is bedoeld om problemen met RabbitVCS zelf te diagnosticeren" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Type:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Te vergrendelen bestanden" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Beschrijf waarom u deze bestanden vergrendelt" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Bestanden vergrendelen" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Alles (de)selecteren" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "De blokkeringen stelen" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Van Revisie" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Naar Revisie" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Annoteren" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "Bestanden negeren en uitsluiten van gevolgd worden" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "Negeren" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "Gewijzigde bestanden (dubbelklik om met basis te vergelijken)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Committen naar:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Bestanden buiten versiebeheer tonen" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Meldingen" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "URI op afstand:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Werkversie:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Nieuwe eigenschap toevoegen." + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Dit dialoogvenster sluiten." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Eigenschappen-editor" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "De eigenschappenlijst verversen" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Het repository van uw werkversie veranderen" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Van:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Naar:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Opties" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "Lokale repository updaten" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revisie" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Externen overslaan" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Recursief" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "Terugdraaien naar opgegeven revisienummer" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Bericht importeren" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Repository" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Genegeerde bestanden meenemen" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Van URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Van: (Samen te voegen URL en revisie)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Revisiebereik" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Naar: (samen te voegen URL en revisie)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL waarvandaan samen te voegen" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Werkversie" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Gebruik deze methode als u wijzigingen hebt gemaakt aan een branch en uw " +"wijzigingen wilt samenvoegen met een andere branch." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Gebruik deze methode als u twee verschillende branches wilt samenvoegen naar " +"uw werkversie." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Voorgeschiedenis negeren" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Samenvoeg-assistent" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Een reeks revisies samenvoegen" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Twee verschillende bomen samenvoegen" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Alleen het samvoegen opnemen" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Toon log" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Test-samenvoegen" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" + +#~ msgid "Completed" +#~ msgstr "Klaar" + +#~ msgid "(no author)" +#~ msgstr "(geen auteur)" diff -Nru rabbitvcs-0.13.1/po/oc.po rabbitvcs-0.15.0.5/po/oc.po --- rabbitvcs-0.13.1/po/oc.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/oc.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1990 @@ +# Occitan (post 1500) translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-05-06 06:27+0000\n" +"Last-Translator: Cédric VALMARY (Tot en òc) \n" +"Language-Team: Occitan (post 1500) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i segonda" +msgstr[1] "%i segondas" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minuta" +msgstr[1] "%i minutas" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i ora" +msgstr[1] "%i oras" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i jorn" +msgstr[1] "%i jorns" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i setmana" +msgstr[1] "%i setmanas" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i mes" +msgstr[1] "%i meses" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i annada" +msgstr[1] "%i annadas" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Desbugatge" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Bugs" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Metre a jorn" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Validar" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Apondre" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Tornar nomenar..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Suprimir" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Restablir" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Restablir" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Netejar" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Exportar..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importar" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Bascuolar..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Fusionar..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Crear un correctiu..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Aplicar lo correctiu..." + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Proprietats" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Ajuda" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Paramètres" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "A prepaus" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Dobrir" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Dobrir un fichièr" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "En cors de mesa a jorn..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Camin" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Extension" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Cargament en cors..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "" + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revision :" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Exportar" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Data" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Messatge" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importacion - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Tornar nomenar" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nom novèl :" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Estat" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Fusionar" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "a" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Seleccionatz un fichièr" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Enregistrar jos..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revision" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Autor" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "D'accions mai..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Modificar" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Òc" + +#: ui/changes.py:321 +msgid "No" +msgstr "Non" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Linha" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Tèxte" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/A" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Accion" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Desconegut" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Anglés" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "" + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Varrolhat" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Numèro" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Òste :" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Nom" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Proprietats - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Valor" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Reservat" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Tipe MIME" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Acabat" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Messatge del jornal" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Desvarrolhar" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Talha" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Copiar cap a..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Copiar l'URL dins lo quichapapièrs" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Desplaçar cap a..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "" + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Modificar..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Novèl..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL :" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Messatge" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Autentificacion" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Confirmacion" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Crear un dorsièr..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Refusar" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Nom d'utilizaire :" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Senhal :" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Camin :" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Proprietat" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Proprietat :" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Domeni :" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Valor :" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autors :" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limit :" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Jornal" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Refrescar" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autentificacion" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Percórrer..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Programas extèrnes" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "General" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Lenga :" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Archivatge" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Tipe :" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Anotar" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Messatges de notificacion" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "De :" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Cap a :" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Opcions" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revision" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Recursiu" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/pl.po rabbitvcs-0.15.0.5/po/pl.po --- rabbitvcs-0.13.1/po/pl.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/pl.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2015 @@ +# Polish translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-11-18 22:00+0000\n" +"Last-Translator: Mateusz Boś \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i sekundy" +msgstr[1] "%i sekund" +msgstr[2] "%i sekund" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minuta" +msgstr[1] "%i minut" +msgstr[2] "%i minut" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i godzina" +msgstr[1] "%i godzin" +msgstr[2] "%i godzin" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i dzień" +msgstr[1] "%i dni" +msgstr[2] "%i dni" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i tydzień" +msgstr[1] "%i tygodni" +msgstr[2] "%i tygodni" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i miesiąc" +msgstr[1] "%i miesięcy" +msgstr[2] "%i miesięcy" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i rok" +msgstr[1] "%i lata" +msgstr[2] "%i lata" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Debuguj" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Błędy" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Otwórz Powłokę" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Odśwież Status" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Dodaj Symbol" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Dodaj Symbole" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Zaktualizuj" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Zaktualizuj kopię roboczą" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Zatwierdź" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Zatwierdź zmiany w repozytorium" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Przeglądarka repozytorium" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Przeglądaj repozytorium" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Zobacz zmiany w pliku" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Zobacz różnice pomiędzy plikami/folderami" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Zobacz różnice pomiędzy dwoma plikami" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Pokaż różnice względem poprzedniej wersji" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Porównaj z poprzednią wersją" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Pokaż zmiany..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Dodaj" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Dodaj do ignorowanych" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Zaktualizuj do wersji..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Zmień nazwę..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Usuń" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Przywróć" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Rozwiąż" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Przywróć" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Oczyść" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Eksportuj..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importuj" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Przełącz..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Właściwości" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Pomoc" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Ustawienia" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "O programie" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "O RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Otwórz" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Otwórz plik" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Przywróć właściwość" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Przywróć właściwość do oryginalnej postaci" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Przywróć właściwość (rekursywnie)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Usuń właściwość" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Usuń tą właściwość" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Usuń tą właściwość (rekursywnie)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Uaktualnianie..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Uaktualniono." + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Uaktualnij do wersji" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Pobierz" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Zakończono pobieranie" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Ścieżka" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Rozszerzenie" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Ładowanie..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Znaleziono %d obiekt(y/ów)" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Wykonywanie \"dodaj\"..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Zakończono \"dodaj\"" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Wersja:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Eksportuj - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "Zarówno URL repozytorium, jak i ścieżka docelowa są wymagane." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Eksportuj" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Wykonywanie \"eksport\"" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Zakończono \"eksport\"" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Zastosuj łatę" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Zastosuj łatę do katalogu..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Stosowanie łaty..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Łata została zastosowana" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Data" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Wiadomość" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importuj - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Pole URL repozytorium jest wymagane" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Wykonywanie \"importuj\"" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Zakończono \"importuj\"" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Zmień nazwę" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nowa nazwa:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Pole nowa nazwa jest wymagane" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Trwa zmienianie nazwy..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Zmieniono nazwę" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Status Tekstowy" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Wykonywanie \"zatwierdź\"..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Zakończono \"zatwierdź\"" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Status" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Wykonywanie 'Złącz'" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Zakończono 'Złącz'" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Scal" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"Wystąpił błąd w rozszerzeniu RabbitVCS. Proszę skontaktować się z autorami RabbitVCS podając szczegóły błędu widoczne poniżej:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Wybierz katalog" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "do" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Wybierz plik" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Zapisz jako...." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Czy na pewno chcesz kontynuować?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "zaznaczone obiekty" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "Dodano katalog do repozytorium" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Wykonywanie \"przywróć\"" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Zakończono \"przywróć\"" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Pola z i do są wymagane" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Przenieś" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Trwa przenoszenie..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Przenoszenie zakończone" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Wersja" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Autor" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Porównaj obok siebie" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Wykonywanie komendy rozwiąż" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Zakończono \"rozwiąż\"" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Więcej akcji..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Zmień" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Zmiana właściwości" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Tak" + +#: ui/changes.py:321 +msgid "No" +msgstr "Nie" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Otwórz z pierwszej rewizji" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "Otwórz z drugiej rewizji" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Nie można adnotować katalogu" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Adnotuj - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Linia" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Tekst" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "Pole od rewizji musi być liczbą całkowitą" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Log - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "Nie dotyczy" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Akcja" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Kopiuj ze ścieżki" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Kopiuj z wersji" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Pokaż różnice względem kopii roboczej" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Pokaż różnice pomiedzy wersjami" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Porównaj z kopią roboczą" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Porównaj wersje" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Pokaż zmiany pomiędzy wersjami" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Edytuj autora..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Edytuj opis zmian..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Edytuj właściwości wersji" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Edytuj autora" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Edytuj opis zmian" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Nieznane" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "angielski" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Wybierz program" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Czy na pewno chcesz wyczyścić ścieżki do repozytoriów?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Ścieżki do repozytoriów zostały wyczyszczone" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Czy na pewno chcesz wyczyścić poprzednie wiadomości" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Poprzednie wiadomości zostały wyczyszczone" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Czy na pewno chcesz wyczyścić swoje dane autentykacji?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Dane uwierzytelniania zostały wyczyszczone" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "Nie udało się pobrać listy właściwości" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Musisz podać ścieżkę docelową." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Utwórz gałąź/etykietę" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Tworzę gałąź/etykietę..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Utworzono gałąź/etykietę" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Zablokowany" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Załóż blokadę" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Wykonywanie \"zablokuj\"" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Zakończono \"zablokuj\"" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "Położenie repozytorium jest polem wymaganym" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Przełącz" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Wykonywanie \"przełącz\"..." + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Zakończono \"przełącz\"" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "GŁÓWNA" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Numer" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Kopia robocza" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Host:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Pobierz - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Wykonywanie 'Pobierz' ..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Nazwa" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Utwórz łatę" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "Podana ścieżka nie wskazuje na kopię roboczą" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Tworzenie pliku łaty..." + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Plik łaty został utworzony" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Właściwości - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Wartość" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Wystąpił błąd przy próbie zapisu właściwości" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Uwaga: zmiany właściwości są stosowane natychmiast. Możesz przejrzeć " +"i cofnąć zmiany używając menu kontekstowego dla każdego obiektu\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"Czy chcesz usunąć wskazane właściwości ze wszystkich plików i podkatalogów\n" +"zawartych w tym katalogu?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "Plik nie jest objęty kontrolą wersji" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "Nie udało się zmienić właściwości" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Typ MIME" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Zakończono" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Zakończono" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Wpis dziennika" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Odblokuj" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Wykonywanie \"odblokuj\"..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Zakończono \"odblokuj\"" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Rozmiar" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Utwórz katalog" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Skopiuj do..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Skopiuj URL do schowka" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Przenieś do.." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Gdzie chcesz skopiować zaznaczenie?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Nowe położenie:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Gdzie chcesz przenieść zaznaczenie?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Oczyszczanie..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Zakończono oczyszczanie" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Pomyślnie utworzono repozytorium" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Wystąpił błąd w czasie tworzenia repozytorium. Upewnij się, że podany " +"katalog jest pusty." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Właściwości dla:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Wybrane właściwości będą stosowana rekursywnie." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Usuń właściwości rekursywnie" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Zmień..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Nowa..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Ścieżka:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Załaduj / Odśwież" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Dodaj wiadomość" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Szczegóły certyfikatu" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Zmień właściwość" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Nazwa katalogu" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Wiadomość" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Proszę dodaj swoje dane uwierzytelniania" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "Proszę podać plik certyfikatu SSL" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Poprzednie wiadomości" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Czy na pewno chcesz usunąć %item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "Błąd RabbitVCS" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Zawsze akceptuj" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Zaakceptuj tylko tym razem" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Zastosuj właściwość rekursywnie" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Uwierzytelnianie" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Sprawdź certyfikat" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Potwierdzenie" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Utwórz katalog..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Potwierdzenie usunięcia" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Odrzuć" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Odcisk klucza:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Wystawca:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Login:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Hasło:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Ścieżka:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Poprzednie wiadomości" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Właściwość" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Właściwość:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "Błąd RabbitVCS" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Dziedzina:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Zapisz dane logowania" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Zmiana Tekstu" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "Obiekty zostaną wysłane do kosza" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Poprawny:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Wartość:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Linki" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Informacje o wersji" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autorzy:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Podziękowania:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "Dotknięte pliki (kliknij dwukrotnie by porównać z bazą)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Tablica wersji" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limit:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Log" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Odśwież" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Pokazuję wersje:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Zażądano oczyszczania\n" +"\n" +"Rozpocząć oczyszczanie kopii roboczej?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Uwierzytelnianie" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Zapis Wiadomości" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Opcje zapisywania wiadomości" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Program używany do porównywania plików" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "Historia Adresów URL" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Przeglądaj..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Wyczyść dane uwierzytelniania" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Włącz symbole" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Włącz atrybuty plików" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Włącz rekursywne sprawdzanie statusów" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Zewnętrzne programy" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Główne" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Język:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Zapisywanie Wiadomości" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Minimalny poziom do zapisywania wiadomości" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Ilość URL-i do zapamiętania" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Ilość wiadomości do zapamiętania" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Zapisane dane" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Zobacz narzędzia debugowania RabbitVCS" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" +"Menu debugowania jest używane do diagnozowania problemów z samym RabbitVCS" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Rodzaj:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Pliki do zablokowania" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Opisz, dlaczego blokujesz te pliki" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Zablokuj pliki" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Zaznacz / Odznacz wszystkie" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Przejmij blokady" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Od wersji" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Do wersji" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Dodaj komentarz" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "Zmienione pliki (kliknij dwukrotnie, by porównać z bazą)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Zatwierdź do:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Pokaż pliki niewersjonowane" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Powiadomienie o wiadomościach" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "Zdalny URI:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Kopia robocza:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Dodaj nową właściwość." + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Zamknij." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Edytor właściwości" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "Odśwież listę właściwości." + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Zmiana repozytorium twojej kopii roboczej" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Z:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Do:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Opcje" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Wersja" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Pomiń zewnętrzne" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Rekursywnie" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Wpisz Wiadomość" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Repozytorium" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Włącz pliki ignorowane" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Z URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Od: (URL i rewizja do złączenia)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Zakres wersji" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Do: (URL i rewizja do złączenia)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Kopia robocza" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Wybierz tą metodę, jeżeli dokonałeś zmian w gałęzi i chciałbyś połączyć je z " +"inną gałęzią." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Wybierz tą metodę, jeżeli chcesz połączyć dwie różne gałęzie do twojej kopii " +"roboczej." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Asystent łączenia" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Scal zakres rewizji" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Scal dwa różne drzewa" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Tylko zanotuj scalenie" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Pokaż logi" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Test Scalania" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/POTFILES.in rabbitvcs-0.15.0.5/po/POTFILES.in --- rabbitvcs-0.13.1/po/POTFILES.in 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/POTFILES.in 2011-11-07 19:04:11.000000000 +0000 @@ -0,0 +1,79 @@ +util/helper.py +ui/commit.py +ui/lock.py +ui/remotes.py +ui/revert.py +ui/stage.py +ui/widget.py +ui/settings.py +ui/import.py +ui/markresolved.py +ui/log.py +ui/update.py +ui/browser.py +ui/merge.py +ui/property_editor.py +ui/relocate.py +ui/revprops.py +ui/property_page.py +ui/wraplabel.py +ui/xml/property_page.xml.h +ui/xml/commit.xml.h +ui/xml/import.xml.h +ui/xml/notification.xml.h +ui/xml/settings.xml.h +ui/xml/lock.xml.h +ui/xml/properties.xml.h +ui/xml/pull.xml.h +ui/xml/ignore.xml.h +ui/xml/property_editor.xml.h +ui/xml/about.xml.h +ui/xml/add.xml.h +ui/xml/relocate.xml.h +ui/xml/merge.xml.h +ui/xml/manager.xml.h +ui/xml/log.xml.h +ui/xml/dialogs/conflict_decision.xml.h +ui/xml/dialogs/loading.xml.h +ui/xml/dialogs/create_folder.xml.h +ui/xml/dialogs/property.xml.h +ui/xml/dialogs/delete_confirmation.xml.h +ui/xml/dialogs/name_email_prompt.xml.h +ui/xml/dialogs/error_notification.xml.h +ui/xml/dialogs/message_box.xml.h +ui/xml/dialogs/ssl_client_cert_prompt.xml.h +ui/xml/dialogs/previous_messages.xml.h +ui/xml/dialogs/certificate.xml.h +ui/xml/dialogs/confirmation.xml.h +ui/xml/clean.xml.h +ui/xml/browser.xml.h +ui/xml/update.xml.h +ui/xml/cleanup.xml.h +ui/xml/git-update.xml.h +ui/xml/reset.xml.h +ui/xml/annotate.xml.h +ui/renderers/__init__.py +ui/annotate.py +ui/cleanup.py +ui/export.py +ui/action.py +ui/updateto.py +ui/reset.py +ui/properties.py +ui/dialog.py +ui/open.py +ui/diff.py +ui/editconflicts.py +ui/delete.py +ui/about.py +ui/ignore.py +ui/clean.py +ui/tags.py +ui/create.py +ui/unstage.py +ui/clone.py +ui/add.py +ui/rename.py +ui/__init__.py +ui/unlock.py +util/contextmenuitems.py diff -Nru rabbitvcs-0.13.1/po/pt_BR.po rabbitvcs-0.15.0.5/po/pt_BR.po --- rabbitvcs-0.13.1/po/pt_BR.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/pt_BR.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2116 @@ +# Brazilian Portuguese translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-12-06 05:15+0000\n" +"Last-Translator: Fernando P Silveira \n" +"Language-Team: Brazilian Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "há pouco" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "%d minutos(s) atrás" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i segundo" +msgstr[1] "%i segundos" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minuto" +msgstr[1] "%i minutos" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i hora" +msgstr[1] "%i horas" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i dia" +msgstr[1] "%i dias" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i semana" +msgstr[1] "%i semanas" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i mês" +msgstr[1] "%i meses" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i ano" +msgstr[1] "%i anos" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Depurar" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Bugs" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Abrir Shell" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Atualizar Status" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Reverter depuração" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Reverter tudo que ve" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Invalidar" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Forçar uma chamada invalidate_extension_info()" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Adicionar Emblema" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Adicionar um emblema" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Obter..." + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Obter uma cópia de trabalho" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Atualizar" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Atualizar uma cópia de trabalho" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Enviar" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Enviar modificações para o repositório" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "RabbitVCS SVN" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "RabbitVCS Git" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "Navegador de Repositório" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "Procurar uma árvore de repositório" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "Verificando se existem modificações..." + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "Verificando se existem modificações efetuados para o repositório" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Menu do diferenciador" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "Lista de opções de comparação" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Diferenciações comparadas à base" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Visualizar as alterações feitas em um arquivo" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Ver diferenciações entre arquivos/pastas" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Ver as diferenças emtre dois arquivos" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Veja a diferenciação de encontro com a revisão prévia" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" +"Ver as modificações realizadas em um arquivo desde a última alteração" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Comparar com a base" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "Comparar com a base usando a ferramenta de comparação lado a lado" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Comparar arquivos/pastas" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "Comparar as diferenças entre dois itens" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Compare com a revisão prévia" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" +"Comparar com prévia revisão usando a ferramenta de comparação lado a lado" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Mostrar Alterações..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "Mostrar alterações entre caminhos e revisões" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Mostrar Log" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Mostrar as informações de um arquivo de log" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Adicionar" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "Programar itens para serem adicionaos ao repositório" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Adicionar à lista de ignorados" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Atualizar para revisão..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Atualizar um arquivo para uma revisão específica" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Renomear..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Agendar um item para ser renomeado no repositório" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Apagar" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Agendar um item para ser deletado do repositório" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Reverter" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Reverter um item para seu estado inalterado" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Resolver" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Marcar um item conflitante como resolvido" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Restaurar" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Recuperar um item em falta" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Realocar..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Realocar sua cópia de trabalho" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Bloquear..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Itens bloqueados localmente" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Liberar Bloqueio..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Liberar bloqueio de um item" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Limpeza" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Limpeza de cópia de trabalho" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Exportar..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" +"Exportar uma cópia de trabalho ou repositório sem informações de " +"versionamento" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Criar Repositório aqui" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Criar um repositório no diretório" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importar" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Importar um item em um respositório" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Branch/tag..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Copiar um item para outro lugar no repositório" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Mudar..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Mudar o lugar do repositório de um cópia de trabalho" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Mesclar..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "Um assistente com passos para mesclar" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Comentário..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Comentar um arquivo" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "Criar Remendo..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "Cria um arquivo diff unificado com todas as mudanças que vocẽ fez" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "Aplicar remendo" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" +"Aplicar um arquivo com resultado de equalidade unificado para a cópia de " +"trabalho" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Propriedades" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Visualizar as propriedades de um item" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Ajuda" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Visualizar ajudar" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Configurações" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Visualizar ou alterar as configurações do RabbitVCS" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "Sobre" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "Sobre o RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Abrir" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "Abrir um arquivo" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Navegue para" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "Procurar em um arquivo ou pasta" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "Reverter propriedade" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "Reverter esta propriedade ao seu estado original" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "Reverter propriedade (recursivo)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "Reverter esta propriedade ao seu estado original (recursivo)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "Excluir propriedade" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "Excluir esta propriedade" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "Apagar propriedade (recursivo)" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "Excluir esta propriedade (recursivo)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "Editar detalhes" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "Exibir e editar detalhes da propriedade" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "Iniciar repositório" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "Clonar" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "Ramificações" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "Palavras-chave" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "Remotos" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "Ignorar item por nome de arquivo" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "Ignorar item por extensão de arquivo" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Atualizando..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Atualização Completada" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Atualizando para Revisão" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Obter" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Obter Concluído" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Caminho" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Extensão" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Carregando..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Encontrado(s) %d item(ns)" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Rodando Comando Adicionar..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Adicionar Concluído" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "Ignorar arquivo:" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "Gerenciador de palavras-chave" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "Palavras-chave" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "Palavra-chave" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "Nome:" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revisão:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "Mensagem:" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "Salvar" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "Data:" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "Tem certeza que quer apagar %s?" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "Adicionar palavra-chave" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "Detalhe da palavra-chave" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Exportado - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "Os campos URL do repositório e caminho de destino são necessários." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Exportar" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Rodando Comando Exportar" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Exportar Concluído" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Aplicar remendo" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Aplicar remendo para o diretório..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Aplicando a linha de remendo..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Linha de remendo aplicada" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "Gerenciador de ramificações" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "Ramificações" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "Ramificação" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Data" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Mensagem" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importado - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "O campo URL do repositório é necessário." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Rodando Comando Importar..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Importar Concluído" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Renomear" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Novo Nome:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "O nome do novo campo é requerido" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Rodando Comando Renomear.." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Renomear Completado" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Texto de Status" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Propriedades de Status" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Rodando Comando Enviar..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Enviar Concluído" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Estado" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "Ver diferenciação por comparação lado a lado" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Executando Teste de Merge" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Teste de Merge Concluído" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Executando Merge" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Merge Concluído" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Merge" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"Ocorreu um erro na extensão do RabbitVCS Nautilus.Por favor contate o Time RabbitVCS com os detalhes do erro listados abaixo:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Selecionar um diretório" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "para" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Selecionar um arquivo" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Salvar como..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Tem certeza que deseja continuar?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "O(s) item(ns) selecionado(s)" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "Adicionado uma pasta ao repositório" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Rodando Comando Reverter..." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Reverter Concluído" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "As URL origem e destino são necessárias" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Realocar" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Rodando Comando Realocar" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Relocar Concluído" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revisão" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Autor" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Visão da unificação pelo diferenciador" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Comparação lado a lado" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Rodando Comando Resolver" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Resolver Concluído" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Mais ações..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "Alteração" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Alteração de Propriedade" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Sim" + +#: ui/changes.py:321 +msgid "No" +msgstr "Não" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "Abrir da primeira versão" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "Abrir da segunda versão" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Não é possível comentar um diretório" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Comentar - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Linha" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Texto" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "O campo revisão de origem deve um inteiro" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Log - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/D" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Ação" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Copiar do Caminho" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Copiar da versão" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Veja a diferenciação de encontro com a cópia em uso" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Veja a diferenciação entre as revisões" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Compare com a versão local" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Compare revisões" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Mostrar mudanças entre as revisões" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Edite o autor..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Edite a mensagem do relatório..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Editar propriedades de revisão" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Edite o autor" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Edite a mensagem do relatório" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Desconhecido" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Inglês" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Selecione um programa" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Tem certeza de que deseja apagar seu caminho do repositório?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Caminho do repositório apagado" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Tem certeza que deseja apagar sua mensagem anterior?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Mensagem anterior apagada" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Tem certeza que deseja apagar sua informação de autenticação?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Informação de autenticação apagada" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "Incapaz de recuperar a lista de propriedades" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Você deve informar uma pasta de destino." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Branch/tag" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Rodando comando Branch/tag..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Branch/tag Completada" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Bloqueado" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Bloquear" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Bloqueando..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Bloqueado" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "O campo repositório local é necessário" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Trocar" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Rodando Comando Trocar" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Trocar Concluído" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Número" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Cópia em uso." + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Servidor:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Checkout - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Executando Checkout..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Chave" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Criar Patch" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "O caminho informado não é de uma cópia de trabalho" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Criando arquivo de remendo" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Arquivo de remendo criado" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Propriedades - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Valor" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Houve um problema ao salvar suas propriedades." + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" +"Nota: Alterações das propriedades são aplicadas instantâneamente. " +"Você precisa rever e anular as alterações efetuadas usando o menu de " +"contexto para cada item.\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" +"Você deseja deletar as propriedades selecionadas para todos os arquivos e " +"subdiretórios\n" +"contidos neste diretório?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "O arquivo não está sob o controle da versão." + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Reservado" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "Incapaz de ajustar um novo valor à propriedade." + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Tipo Mime" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Concluído" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Finalizado" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Mensagem de log" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Desbloquear" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Rodando Comando Desbloquear" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Desbloquear Completado" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Tamanho" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Criar pasta..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Copiar para..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Copiar a URL para a área de transferência" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Mover para..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Onde você quer copiar a seleção?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Nova Localização" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Onde você quer mover a seleção?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Limpando..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Limpeza Concluída" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Repositório criado com sucesso" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Ocorreu um erro criando o repositório. Tenha certeza que o diretório " +"informando está vazio." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Propriedades para:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "As propriedades selecionadas serão aplicadas recursivamente." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Apagar propriedades recursivamente" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Editar..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Novo..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Caminho:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Carreage/Renovar" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Adicionar Mensagem" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Detalhes do Certificado" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Editar Detalhes da Propriedade" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Nome da Pasta" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Mensagem" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Por favor, adicionar detalhes da sua autenticação" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "Por favor forneça seu arquivo de certificação SSL" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Mensagem Anterior" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Tem certeza que deseja deleter %item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "Erro do RRabbitVCS" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Aceitar Sempre" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Aceitar uma vez" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Aplicar propriedade recursivamente" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Autenticação" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Verificar Certificado" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Confirmação" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Criar pasta..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Confirmação de Remoção" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Negar" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Impressão digital:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Emissor:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Login:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Senha:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Caminho:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Mensagem Anterior" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Propriedade" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Propriedade:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "Erro do RabbitVCS" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Domínio:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "Certificação SSL do cliente" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Salvar Autenticação" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "Alteração do texto" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "O(s) item(ns) pode(m) ser enviado(s) para lixeira." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Validar:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Valor:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Links" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Informações da Versão" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autores:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Agradecimentos:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "Arquivo(s) afetado(s) (duplo clique para comparar com a base)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Tabela de Revisões" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limite:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Log" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Atualizar" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Mostrando Revisões:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Parar em cópia" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Limpeza Solicitada ....\n" +"\n" +"Começar a limpeza da cópia de trabalho?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autenticação" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Mensagens de Log" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Opções de Log" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Programa utilizado para comparar arquivos" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "Histórico de URL(s)" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Procurar..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Apagar sua informação de autenticação" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Ativar emblemas" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Ativar atributos de arquivo" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Ativar checagem recursiva de status" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Programas Externos" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Geral" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Idioma:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Gravando Log" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Nível médio para log" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Número de URLs para se lembrar" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Número de mensagens para se lembrar" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Data Salva" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Mostrar ferramentas de debug do RabbitVCS" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" +"O menu de debug é usado para diagnosticar problemas com o próprio RabbitVCS" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Tipo:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Arquivos para bloquear" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" +"Por favor, descreva porque você está bloqueando esses arquivos" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Bloquear Arquivos" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Selecionar / Deselecionar tudo" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Roubar os bloqueios" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Da Revisão" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Para Revisão" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Comentar" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "Arquivos alterados (duplo clique para comparar com a base)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Enviar para:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Mostrar arquivos não versionados" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Mensagens de Notificação" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "URI Remota:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Cópia em uso" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "Adicione uma nova propriedade." + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "Fechar esta janela." + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Editor de Propriedade" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "Atualizar a lista de propriedades." + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Alterar o repositório da sua cópia de trabalho" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "De:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Para:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Opções" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revisão" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Omitir os Externos" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Recursivo" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Importar Mensagem" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Repositório" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Incluir arquivos ignorados" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Da URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "De: (URL e revisão para mesclagem)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Intervalo de Revisões" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Para: (URL e revisão para mesclagem)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL de origem para mesclagem" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Cópia de Trabalho" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Escolha este método se você fez algumas alterações para um branch e deseja " +"mesclar suas alterações com outro branch." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Escolha este método se você deseja mesclar dois diferentes branches em sua " +"cópia de trabalho." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignorar ancestral" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Assistente de Mesclagem" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Mesclar um intervalo de revisões" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Mesclar duas árvores diferentes" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Somente gravar a mesclagem" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Mostrar Log" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Testar Mesclagem" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Utilize o diálogo de log para selecionar as revisões que você deseja " +"mesclar. Ou, escreve manualmente as revisões, separando por vírgula. Você " +"pode especificar um intervalo de visões utilizando um traço.\n" +"\n" +"Examplo: 4-7,9,11,15-HEAD\n" +"\n" +"Para mesclar todas as revisões, deixa a caixa vazia." + +#~ msgid "Completed" +#~ msgstr "Concluído" + +#~ msgid "(no author)" +#~ msgstr "(sem autor)" + +#~ msgid "Switch Details" +#~ msgstr "Mudar Detalhes" + +#~ msgid "Create copy from" +#~ msgstr "\t Criar cópia de" + +#~ msgid "Program used to browse repositories" +#~ msgstr "Programa utilizado para navegar nos repositórios" + +#~ msgid "Show new version on the right side" +#~ msgstr "Mostrar a nova versão do lado direito" + +#~ msgid "Update Depth" +#~ msgstr "Atualizar Profundidade" + +#~ msgid "Destination:" +#~ msgstr "Destino:" + +#~ msgid "Deleted" +#~ msgstr "Deletado" + +#~ msgid "Copied" +#~ msgstr "Copiado" + +#~ msgid "Added" +#~ msgstr "Adicionado" + +#~ msgid "Reverted" +#~ msgstr "Revertido" + +#~ msgid "Restored" +#~ msgstr "Restaurado" + +#~ msgid "Failed Revert" +#~ msgstr "Falha ao Reverter" + +#~ msgid "Resolved" +#~ msgstr "Resolvido" + +#~ msgid "Failed Unlock" +#~ msgstr "Falha ao Desbloquear" + +#~ msgid "Failed Lock" +#~ msgstr "Falha ao Bloquear" + +#~ msgid "External" +#~ msgstr "Externo" + +#~ msgid "Modified" +#~ msgstr "Modificado" + +#~ msgid "Replaced" +#~ msgstr "Substituído" + +#~ msgid "Changed" +#~ msgstr "Alterado" + +#~ msgid "Skipped" +#~ msgstr "Ignorado" + +#~ msgid "Updated" +#~ msgstr "Atualizado" + +#~ msgid "Annotated" +#~ msgstr "Comentado" + +#~ msgid "Unlocked" +#~ msgstr "Desbloqueado" + +#~ msgid "Conflicted" +#~ msgstr "Conflitante" + +#~ msgid "Inapplicable" +#~ msgstr "Inaplicável" + +#~ msgid "Unchanged" +#~ msgstr "Não modificado" + +#~ msgid "Merged" +#~ msgstr "Mesclado" + +#~ msgid "Obstructed" +#~ msgstr "Obstruído" + +#~ msgid "Missing" +#~ msgstr "Faltando" diff -Nru rabbitvcs-0.13.1/po/RabbitVCS.pot rabbitvcs-0.15.0.5/po/RabbitVCS.pot --- rabbitvcs-0.13.1/po/RabbitVCS.pot 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/RabbitVCS.pot 2011-11-07 19:04:11.000000000 +0000 @@ -0,0 +1,1959 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-11-07 13:56-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: util/helper.py:124 +msgid "just now" +msgstr "" + +#: util/helper.py:126 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:662 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:665 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:668 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:671 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:674 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:677 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:680 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: ui/commit.py:93 ui/lock.py:111 ui/xml/dialogs/loading.xml.h:1 ui/add.py:95 +#: ui/unlock.py:85 +msgid "Loading..." +msgstr "" + +#: ui/commit.py:100 ui/lock.py:114 ui/add.py:98 ui/unlock.py:109 +#, python-format +msgid "Found %d item(s)" +msgstr "" + +#: ui/commit.py:202 ui/commit.py:317 ui/lock.py:70 ui/revert.py:62 +#: ui/revert.py:128 ui/stage.py:63 ui/markresolved.py:61 ui/log.py:348 +#: ui/log.py:586 ui/browser.py:89 ui/action.py:118 ui/unstage.py:63 +#: ui/add.py:72 ui/unlock.py:61 +msgid "Path" +msgstr "" + +#: ui/commit.py:202 ui/commit.py:317 ui/lock.py:70 ui/revert.py:62 +#: ui/revert.py:128 ui/stage.py:63 ui/markresolved.py:61 ui/unstage.py:63 +#: ui/add.py:72 ui/unlock.py:61 +msgid "Extension" +msgstr "" + +#: ui/commit.py:203 ui/revert.py:63 ui/markresolved.py:62 +msgid "Text Status" +msgstr "" + +#: ui/commit.py:203 ui/revert.py:63 ui/markresolved.py:62 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:292 ui/commit.py:400 ui/xml/commit.xml.h:4 +#: util/contextmenuitems.py:346 +msgid "Commit" +msgstr "" + +#: ui/commit.py:293 ui/commit.py:401 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:299 ui/commit.py:410 +msgid "Completed Commit" +msgstr "" + +#: ui/commit.py:318 ui/revert.py:129 ui/property_editor.py:111 +msgid "Status" +msgstr "" + +#: ui/lock.py:71 +msgid "Locked" +msgstr "" + +#: ui/lock.py:122 +msgid "Yes" +msgstr "" + +#: ui/lock.py:163 +msgid "Get Lock" +msgstr "" + +#: ui/lock.py:164 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:173 +msgid "Completed Lock" +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/property_editor.py:111 ui/properties.py:63 +msgid "Name" +msgstr "" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/remotes.py:128 ui/tags.py:230 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/revert.py:50 ui/revert.py:103 ui/revert.py:115 ui/revert.py:168 +#: util/contextmenuitems.py:462 +msgid "Revert" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/stage.py:50 ui/stage.py:101 util/contextmenuitems.py:684 +msgid "Stage" +msgstr "" + +#: ui/stage.py:102 +msgid "Running Stage Command..." +msgstr "" + +#: ui/stage.py:105 +msgid "Completed Stage" +msgstr "" + +#: ui/widget.py:902 ui/widget.py:908 ui/xml/merge.xml.h:11 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:903 ui/log.py:48 ui/log.py:337 ui/log.py:570 ui/browser.py:89 +#: ui/xml/merge.xml.h:19 ui/annotate.py:127 ui/annotate.py:228 +msgid "Revision" +msgstr "" + +#: ui/widget.py:904 +msgid "Branch" +msgstr "" + +#: ui/widget.py:909 +msgid "Number" +msgstr "" + +#: ui/widget.py:912 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1103 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1122 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1148 ui/xml/dialogs/certificate.xml.h:7 +msgid "Host:" +msgstr "" + +#: ui/widget.py:1249 +msgid "Add line:" +msgstr "" + +#: ui/widget.py:1254 ui/xml/add.xml.h:1 ui/tags.py:273 ui/add.py:152 +#: util/contextmenuitems.py:433 +msgid "Add" +msgstr "" + +#: ui/settings.py:43 ui/xml/settings.xml.h:35 +msgid "Unknown" +msgstr "" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:297 +msgid "Select a program" +msgstr "" + +#: ui/settings.py:306 +msgid "Are you sure you want to clear your repository paths?" +msgstr "" + +#: ui/settings.py:313 +msgid "Repository paths cleared" +msgstr "" + +#: ui/settings.py:317 +msgid "Are you sure you want to clear your previous messages?" +msgstr "" + +#: ui/settings.py:324 +msgid "Previous messages cleared" +msgstr "" + +#: ui/settings.py:328 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" + +#: ui/settings.py:345 +msgid "Authentication information cleared" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:80 ui/xml/import.xml.h:3 util/contextmenuitems.py:523 +msgid "Import" +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "" + +#: ui/markresolved.py:48 ui/markresolved.py:102 util/contextmenuitems.py:468 +msgid "Mark as Resolved" +msgstr "" + +#: ui/markresolved.py:103 +msgid "Running Resolved Command..." +msgstr "" + +#: ui/markresolved.py:106 +msgid "Completed Mark as Resolved" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "" + +#: ui/log.py:271 ui/log.py:272 ui/xml/log.xml.h:7 +msgid "N/A" +msgstr "" + +#: ui/log.py:337 ui/log.py:570 ui/browser.py:89 ui/annotate.py:127 +#: ui/annotate.py:228 +msgid "Author" +msgstr "" + +#: ui/log.py:338 ui/log.py:571 ui/browser.py:89 ui/annotate.py:128 +#: ui/annotate.py:229 ui/dialog.py:52 +msgid "Date" +msgstr "" + +#: ui/log.py:338 ui/log.py:571 ui/xml/dialogs/message_box.xml.h:1 +#: ui/dialog.py:52 +msgid "Message" +msgstr "" + +#: ui/log.py:348 ui/log.py:586 ui/action.py:118 +msgid "Action" +msgstr "" + +#: ui/log.py:349 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:349 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:570 +msgid "Graph" +msgstr "" + +#: ui/log.py:798 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:803 util/contextmenuitems.py:397 +msgid "View diff against previous revision" +msgstr "" + +#: ui/log.py:808 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:813 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:818 util/contextmenuitems.py:415 +msgid "Compare with previous revision" +msgstr "" + +#: ui/log.py:823 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:829 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:835 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:840 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:841 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:846 ui/log.py:850 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:854 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:858 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1119 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1131 +msgid "Edit log message" +msgstr "" + +#: ui/update.py:53 ui/update.py:97 ui/xml/update.xml.h:6 +#: util/contextmenuitems.py:340 +msgid "Update" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "" + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "" + +#: ui/browser.py:331 +msgid "Select" +msgstr "" + +#: ui/browser.py:352 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:357 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:362 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:367 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:476 ui/rename.py:53 ui/rename.py:85 ui/rename.py:114 +msgid "Rename" +msgstr "" + +#: ui/browser.py:476 ui/rename.py:53 +msgid "New Name:" +msgstr "" + +#: ui/browser.py:537 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:538 ui/browser.py:567 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:566 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/merge.py:94 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:95 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:97 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:98 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:109 +msgid "Merge" +msgstr "" + +#: ui/merge.py:465 ui/merge.py:515 +msgid "Author:" +msgstr "" + +#: ui/merge.py:477 ui/merge.py:527 ui/tags.py:165 +msgid "Date:" +msgstr "" + +#: ui/merge.py:488 ui/merge.py:538 ui/xml/browser.xml.h:3 ui/tags.py:109 +#: ui/tags.py:176 +msgid "Revision:" +msgstr "" + +#: ui/merge.py:500 ui/merge.py:550 ui/tags.py:128 ui/tags.py:188 +msgid "Message:" +msgstr "" + +#: ui/property_editor.py:55 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:60 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:101 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:111 ui/properties.py:63 +msgid "Value" +msgstr "" + +#: ui/property_editor.py:111 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:155 ui/revprops.py:65 ui/properties.py:158 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/xml/relocate.xml.h:3 +msgid "Relocate" +msgstr "" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "" + +#: ui/property_page.py:146 +msgid "Repository URL" +msgstr "" + +#: ui/xml/property_page.xml.h:1 +msgid "Content status:" +msgstr "" + +#: ui/xml/property_page.xml.h:2 ui/xml/dialogs/name_email_prompt.xml.h:4 +#: ui/tags.py:99 +msgid "Name:" +msgstr "" + +#: ui/xml/property_page.xml.h:3 +msgid "Property status:" +msgstr "" + +#: ui/xml/property_page.xml.h:4 util/contextmenuitems.py:352 +msgid "RabbitVCS" +msgstr "" + +#: ui/xml/property_page.xml.h:5 +msgid "VCS:" +msgstr "" + +#: ui/xml/commit.xml.h:1 ui/xml/dialogs/create_folder.xml.h:1 +msgid "Add Message" +msgstr "" + +#: ui/xml/commit.xml.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/xml/commit.xml.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/xml/commit.xml.h:5 ui/xml/import.xml.h:5 ui/xml/lock.xml.h:4 +#: ui/xml/dialogs/previous_messages.xml.h:3 +msgid "Previous Messages" +msgstr "" + +#: ui/xml/commit.xml.h:6 ui/xml/lock.xml.h:5 ui/xml/add.xml.h:2 +msgid "Select / Deselect all" +msgstr "" + +#: ui/xml/commit.xml.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/xml/import.xml.h:1 +msgid "Import Message" +msgstr "" + +#: ui/xml/import.xml.h:2 +msgid "Repository" +msgstr "" + +#: ui/xml/import.xml.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/xml/notification.xml.h:1 +msgid "Notification Messages" +msgstr "" + +#: ui/xml/settings.xml.h:1 +msgid "Authentication" +msgstr "" + +#: ui/xml/settings.xml.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/xml/settings.xml.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/xml/settings.xml.h:4 +msgid "Log Messages" +msgstr "" + +#: ui/xml/settings.xml.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/xml/settings.xml.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/xml/settings.xml.h:7 +msgid "Other Information" +msgstr "" + +#: ui/xml/settings.xml.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/xml/settings.xml.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/xml/settings.xml.h:10 +msgid "RabbitVCS" +msgstr "" + +#: ui/xml/settings.xml.h:11 +msgid "URL History" +msgstr "" + +#: ui/xml/settings.xml.h:12 +msgid "Browse..." +msgstr "" + +#: ui/xml/settings.xml.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/xml/settings.xml.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/xml/settings.xml.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/xml/settings.xml.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/xml/settings.xml.h:17 +msgid "External Programs" +msgstr "" + +#: ui/xml/settings.xml.h:18 +msgid "General" +msgstr "" + +#: ui/xml/settings.xml.h:19 +msgid "Git" +msgstr "" + +#: ui/xml/settings.xml.h:20 +msgid "Language:" +msgstr "" + +#: ui/xml/settings.xml.h:21 +msgid "Logging" +msgstr "" + +#: ui/xml/settings.xml.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/xml/settings.xml.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/xml/settings.xml.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/xml/settings.xml.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/xml/settings.xml.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/xml/settings.xml.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/xml/settings.xml.h:28 util/contextmenuitems.py:581 +msgid "Settings" +msgstr "" + +#: ui/xml/settings.xml.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/xml/settings.xml.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/xml/settings.xml.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/xml/settings.xml.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/xml/settings.xml.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/xml/settings.xml.h:34 +msgid "Type:" +msgstr "" + +#: ui/xml/lock.xml.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/xml/lock.xml.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/xml/lock.xml.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/xml/lock.xml.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/xml/properties.xml.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/xml/properties.xml.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/xml/properties.xml.h:3 util/contextmenuitems.py:456 +msgid "Delete" +msgstr "" + +#: ui/xml/properties.xml.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/xml/properties.xml.h:5 +msgid "Edit..." +msgstr "" + +#: ui/xml/properties.xml.h:6 +msgid "New..." +msgstr "" + +#: ui/xml/properties.xml.h:7 util/contextmenuitems.py:569 +msgid "Properties" +msgstr "" + +#: ui/xml/properties.xml.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/xml/pull.xml.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/xml/pull.xml.h:2 ui/xml/git-update.xml.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/xml/pull.xml.h:3 +msgid "Pull" +msgstr "" + +#: ui/xml/ignore.xml.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/xml/ignore.xml.h:2 +msgid "Ignore" +msgstr "" + +#: ui/xml/property_editor.xml.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/xml/property_editor.xml.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/xml/property_editor.xml.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/xml/property_editor.xml.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/xml/property_editor.xml.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/xml/property_editor.xml.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/xml/about.xml.h:1 +msgid "Links" +msgstr "" + +#: ui/xml/about.xml.h:2 +msgid "Version Information" +msgstr "" + +#: ui/xml/about.xml.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/xml/about.xml.h:4 util/contextmenuitems.py:587 +msgid "About" +msgstr "" + +#: ui/xml/about.xml.h:5 +msgid "Authors:" +msgstr "" + +#: ui/xml/about.xml.h:6 +msgid "Thanks:" +msgstr "" + +#: ui/xml/relocate.xml.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/xml/relocate.xml.h:2 +msgid "From:" +msgstr "" + +#: ui/xml/relocate.xml.h:4 +msgid "To:" +msgstr "" + +#: ui/xml/merge.xml.h:1 +msgid "From URL" +msgstr "" + +#: ui/xml/merge.xml.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/xml/merge.xml.h:3 ui/xml/update.xml.h:1 ui/xml/git-update.xml.h:1 +#: ui/xml/reset.xml.h:1 +msgid "Options" +msgstr "" + +#: ui/xml/merge.xml.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/xml/merge.xml.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/xml/merge.xml.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/xml/merge.xml.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/xml/merge.xml.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/xml/merge.xml.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/xml/merge.xml.h:10 +msgid "Choose this method if you wish to reintegrate a branch into the trunk." +msgstr "" + +#: ui/xml/merge.xml.h:12 +msgid "Ignore ancestry" +msgstr "" + +#: ui/xml/merge.xml.h:13 +msgid "Merge Assistant" +msgstr "" + +#: ui/xml/merge.xml.h:14 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/xml/merge.xml.h:15 +msgid "Merge two different trees" +msgstr "" + +#: ui/xml/merge.xml.h:16 +msgid "Only record the merge" +msgstr "" + +#: ui/xml/merge.xml.h:17 ui/xml/update.xml.h:4 +msgid "Recursive" +msgstr "" + +#: ui/xml/merge.xml.h:18 +msgid "Reintegrate a branch" +msgstr "" + +#: ui/xml/merge.xml.h:20 +msgid "Show log" +msgstr "" + +#: ui/xml/merge.xml.h:21 +msgid "Test Merge" +msgstr "" + +#: ui/xml/merge.xml.h:22 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" + +#: ui/xml/manager.xml.h:1 +msgid "label" +msgstr "" + +#: ui/xml/log.xml.h:1 +msgid "100" +msgstr "" + +#: ui/xml/log.xml.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/xml/log.xml.h:3 ui/xml/dialogs/previous_messages.xml.h:1 +msgid "Message" +msgstr "" + +#: ui/xml/log.xml.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/xml/log.xml.h:5 +msgid "Limit:" +msgstr "" + +#: ui/xml/log.xml.h:6 +msgid "Log" +msgstr "" + +#: ui/xml/log.xml.h:8 +msgid "Refresh" +msgstr "" + +#: ui/xml/log.xml.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/xml/log.xml.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/xml/log.xml.h:11 ui/dialog.py:136 +msgid "to" +msgstr "" + +#: ui/xml/dialogs/conflict_decision.xml.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/xml/dialogs/conflict_decision.xml.h:2 +msgid "Accept Mine" +msgstr "" + +#: ui/xml/dialogs/conflict_decision.xml.h:3 +msgid "Accept Theirs" +msgstr "" + +#: ui/xml/dialogs/conflict_decision.xml.h:4 +msgid "After the editing conflict, mark the file as resolved." +msgstr "" + +#: ui/xml/dialogs/conflict_decision.xml.h:5 +msgid "Cancel" +msgstr "" + +#: ui/xml/dialogs/conflict_decision.xml.h:6 +msgid "Edit Conflicts" +msgstr "" + +#: ui/xml/dialogs/conflict_decision.xml.h:7 +msgid "Merge Manually" +msgstr "" + +#: ui/xml/dialogs/create_folder.xml.h:2 +msgid "Folder Name" +msgstr "" + +#: ui/xml/dialogs/create_folder.xml.h:3 +msgid "Create Folder..." +msgstr "" + +#: ui/xml/dialogs/property.xml.h:1 +msgid "Edit Property Details" +msgstr "" + +#: ui/xml/dialogs/property.xml.h:2 +msgid "Apply property recursively" +msgstr "" + +#: ui/xml/dialogs/property.xml.h:3 +msgid "Property" +msgstr "" + +#: ui/xml/dialogs/property.xml.h:4 +msgid "Property:" +msgstr "" + +#: ui/xml/dialogs/property.xml.h:5 +msgid "Value:" +msgstr "" + +#: ui/xml/dialogs/delete_confirmation.xml.h:2 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/xml/dialogs/delete_confirmation.xml.h:3 +msgid "Delete Confirmation" +msgstr "" + +#: ui/xml/dialogs/delete_confirmation.xml.h:4 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/xml/dialogs/name_email_prompt.xml.h:1 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/xml/dialogs/name_email_prompt.xml.h:2 +msgid "Email:" +msgstr "" + +#: ui/xml/dialogs/name_email_prompt.xml.h:3 +msgid "Name and Email" +msgstr "" + +#: ui/xml/dialogs/error_notification.xml.h:1 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/xml/dialogs/error_notification.xml.h:2 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/xml/dialogs/ssl_client_cert_prompt.xml.h:1 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/xml/dialogs/ssl_client_cert_prompt.xml.h:2 +msgid "Path:" +msgstr "" + +#: ui/xml/dialogs/ssl_client_cert_prompt.xml.h:3 +#: ui/xml/dialogs/certificate.xml.h:9 +msgid "Realm:" +msgstr "" + +#: ui/xml/dialogs/ssl_client_cert_prompt.xml.h:4 +msgid "SSL Client Certification" +msgstr "" + +#: ui/xml/dialogs/ssl_client_cert_prompt.xml.h:5 +msgid "Save Authentication" +msgstr "" + +#: ui/xml/dialogs/previous_messages.xml.h:2 +msgid "Previous Messages" +msgstr "" + +#: ui/xml/dialogs/certificate.xml.h:1 +msgid "Certificate Details" +msgstr "" + +#: ui/xml/dialogs/certificate.xml.h:2 +msgid "Accept Forever" +msgstr "" + +#: ui/xml/dialogs/certificate.xml.h:3 +msgid "Accept Once" +msgstr "" + +#: ui/xml/dialogs/certificate.xml.h:4 +msgid "Check Certificate" +msgstr "" + +#: ui/xml/dialogs/certificate.xml.h:5 +msgid "Deny" +msgstr "" + +#: ui/xml/dialogs/certificate.xml.h:6 +msgid "Fingerprint:" +msgstr "" + +#: ui/xml/dialogs/certificate.xml.h:8 +msgid "Issuer:" +msgstr "" + +#: ui/xml/dialogs/certificate.xml.h:10 +msgid "Valid:" +msgstr "" + +#: ui/xml/dialogs/confirmation.xml.h:1 ui/dialog.py:297 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/xml/dialogs/confirmation.xml.h:2 +msgid "Confirmation" +msgstr "" + +#: ui/xml/clean.xml.h:1 +msgid "Clean your Repository" +msgstr "" + +#: ui/xml/clean.xml.h:2 ui/clean.py:75 util/contextmenuitems.py:675 +msgid "Clean" +msgstr "" + +#: ui/xml/clean.xml.h:3 +msgid "Dry run" +msgstr "" + +#: ui/xml/clean.xml.h:4 +msgid "Force" +msgstr "" + +#: ui/xml/clean.xml.h:5 +msgid "Remove directories" +msgstr "" + +#: ui/xml/clean.xml.h:6 +msgid "Remove ignored files, too" +msgstr "" + +#: ui/xml/clean.xml.h:7 +msgid "Remove only ignored files" +msgstr "" + +#: ui/xml/clean.xml.h:8 +msgid "Remove untracked files from the working tree" +msgstr "" + +#: ui/xml/browser.xml.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/xml/browser.xml.h:2 util/contextmenuitems.py:367 +msgid "Repository Browser" +msgstr "" + +#: ui/xml/browser.xml.h:4 +msgid "URL:" +msgstr "" + +#: ui/xml/update.xml.h:2 ui/xml/reset.xml.h:4 +msgid "Revision" +msgstr "" + +#: ui/xml/update.xml.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/xml/update.xml.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/xml/cleanup.xml.h:1 ui/cleanup.py:56 +msgid "Cleaning Up..." +msgstr "" + +#: ui/xml/cleanup.xml.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/xml/git-update.xml.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/xml/reset.xml.h:2 +msgid "Path" +msgstr "" + +#: ui/xml/reset.xml.h:3 +msgid "Reset your Repository" +msgstr "" + +#: ui/xml/reset.xml.h:5 +msgid "" +"Hard - Matches the working tree and index to that of the \n" +"tree being switched to" +msgstr "" + +#: ui/xml/reset.xml.h:7 +msgid "" +"Merge - Resets the index to match the tree recorded by the named " +"commit,\n" +"and updates the files that are different between the named commit\n" +"and the current commit in the working tree" +msgstr "" + +#: ui/xml/reset.xml.h:10 +msgid "Mixed - Reset the index but not the working tree" +msgstr "" + +#: ui/xml/reset.xml.h:11 +msgid "" +"Soft - Does not touch the index file or working tree at all, \n" +"but requires them to be in good working order" +msgstr "" + +#: ui/xml/reset.xml.h:13 +msgid "None" +msgstr "" + +#: ui/xml/reset.xml.h:14 ui/reset.py:105 util/contextmenuitems.py:679 +msgid "Reset" +msgstr "" + +#: ui/xml/reset.xml.h:15 +msgid "Reset current HEAD to specified state." +msgstr "" + +#: ui/xml/annotate.xml.h:1 +msgid "From Revision" +msgstr "" + +#: ui/xml/annotate.xml.h:2 +msgid "To Revision" +msgstr "" + +#: ui/xml/annotate.xml.h:3 +msgid "Annotate" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/cleanup.py:55 util/contextmenuitems.py:497 +msgid "Cleanup" +msgstr "" + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "" + +#: ui/export.py:45 ui/export.py:124 +#, python-format +msgid "Export - %s" +msgstr "" + +#: ui/export.py:72 ui/export.py:141 ui/clone.py:57 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:161 +msgid "Export" +msgstr "" + +#: ui/export.py:93 ui/export.py:162 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:170 +msgid "Completed Export" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "" + +#: ui/action.py:355 +msgid "Finished" +msgstr "" + +#: ui/action.py:359 +#, python-format +msgid "%s - Finished" +msgstr "" + +#: ui/action.py:382 +msgid "Log Message" +msgstr "" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 +msgid "Checkout" +msgstr "" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 +msgid "Completed Checkout" +msgstr "" + +#: ui/reset.py:106 +msgid "Running Reset Command..." +msgstr "" + +#: ui/reset.py:113 +msgid "Completed Reset" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/dialog.py:36 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:106 +msgid "Select a Folder" +msgstr "" + +#: ui/dialog.py:259 +msgid "Select a File" +msgstr "" + +#: ui/dialog.py:278 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:325 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:396 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/diff.py:310 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/clean.py:76 +msgid "Running Clean Command..." +msgstr "" + +#: ui/clean.py:86 +msgid "Completed Clean" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/create.py:51 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:53 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/create.py:67 util/contextmenuitems.py:640 +msgid "Initialize Repository" +msgstr "" + +#: ui/create.py:68 +msgid "Setting up repository..." +msgstr "" + +#: ui/create.py:70 +msgid "Completed repository setup" +msgstr "" + +#: ui/unstage.py:50 ui/unstage.py:101 util/contextmenuitems.py:689 +msgid "Unstage" +msgstr "" + +#: ui/unstage.py:102 +msgid "Running Unstage Command..." +msgstr "" + +#: ui/unstage.py:105 +msgid "Completed Unstage" +msgstr "" + +#: ui/clone.py:47 ui/clone.py:65 util/contextmenuitems.py:645 +msgid "Clone" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/add.py:153 +msgid "Running Add Command..." +msgstr "" + +#: ui/add.py:155 +msgid "Completed Add" +msgstr "" + +#: ui/rename.py:49 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:61 +msgid "The new name field is required" +msgstr "" + +#: ui/rename.py:86 ui/rename.py:115 +msgid "Running Rename Command..." +msgstr "" + +#: ui/rename.py:92 ui/rename.py:121 +msgid "Completed Rename" +msgstr "" + +#: ui/__init__.py:55 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:127 +msgid "Unlock" +msgstr "" + +#: ui/unlock.py:128 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:131 +msgid "Completed Unlock" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Debug" +msgstr "" + +#: util/contextmenuitems.py:297 +msgid "Bugs" +msgstr "" + +#: util/contextmenuitems.py:302 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:308 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:314 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:320 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:321 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:327 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:328 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:334 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:341 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:347 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:362 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:368 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:373 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:374 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:379 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:380 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:385 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:386 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:391 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:392 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:398 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:403 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:404 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:409 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:410 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:416 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:421 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:422 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:427 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:434 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:439 +msgid "Add to ignore list" +msgstr "" + +#: util/contextmenuitems.py:444 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:445 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:450 +msgid "Rename..." +msgstr "" + +#: util/contextmenuitems.py:451 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:474 +msgid "Restore" +msgstr "" + +#: util/contextmenuitems.py:475 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:479 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:480 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:485 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:486 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:491 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:492 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:498 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:517 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:518 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:524 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:539 +msgid "Switch..." +msgstr "" + +#: util/contextmenuitems.py:540 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:546 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:551 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:552 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:557 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:558 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:564 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:570 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:575 +msgid "Help" +msgstr "" + +#: util/contextmenuitems.py:576 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:582 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:588 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Open" +msgstr "" + +#: util/contextmenuitems.py:594 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:602 +msgid "Browse to" +msgstr "" + +#: util/contextmenuitems.py:603 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:608 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:614 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:616 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:621 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:623 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:627 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:629 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:634 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:636 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:650 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:655 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:660 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:665 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:670 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:694 +msgid "Edit conflicts" +msgstr "" + +#: util/contextmenuitems.py:720 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:739 +msgid "Ignore item by file extension" +msgstr "" diff -Nru rabbitvcs-0.13.1/po/README rabbitvcs-0.15.0.5/po/README --- rabbitvcs-0.13.1/po/README 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/README 2009-09-28 11:22:01.000000000 +0000 @@ -0,0 +1,13 @@ +How to create a translation +-------------------------- + +Here is a brief set of commands to generate a new translation. Replace +en_CA with your language and locale of choice. + +$ msginit --input=po/RabbitVCS.pot --locale=en_CA +$ mv en_CA.po po/en_CA.po + +Update po/en_CA.po with your translations. When you are done, type: + +$ mkdir -p locale/en_CA/LC_MESSAGES +$ msgfmt --output-file=locale/en_CA/LC_MESSAGES/RabbitVCS.mo po/en_CA.po diff -Nru rabbitvcs-0.13.1/po/ro.po rabbitvcs-0.15.0.5/po/ro.po --- rabbitvcs-0.13.1/po/ro.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/ro.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1994 @@ +# Romanian translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-02-09 10:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Romanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 " +"== 0) && (n != 0))) ? 2: 1));\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i secundă" +msgstr[1] "%i de secunde" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minut" +msgstr[1] "%i minute" +msgstr[2] "%i de minute" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i oră" +msgstr[1] "%i ore" +msgstr[2] "%i de ore" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Depanează" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Stare Reîmprospătare" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Invalidează" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Adaugă Emblemă" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Adauga o emblemă" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Actualizare" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Vizualizează modificările aduse unui fișier" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Arată Jurnal" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Adăugare" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Adaugă la lista de ignorat" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Redenumește..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Șterge" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Restaurează" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Rezolvă" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Restaurează" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Ștergere" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importă" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Comutare..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Adnotează..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Adnotează un fișier" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Proprietăți" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Vizualizează proprietățile unui articol" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Ajutor" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Vizualizează ajutor" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Setări" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Vizualizează sau modifică setaările RabbitVCS" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "Despre" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "Despre RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Deschide" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Caută în" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "În curs de actualizare..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Actualizare completă" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Actualizați la revizia" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Cale" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Extensie" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Se încarcă..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Găsit %d articol(e)" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Rulează Comanda Adăugare..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Adăugare Finalizată" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Exportă- %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Exportă" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Export Terminat" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Data" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Mesaj" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importă - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Câmpul URL depozitar este necesar." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Import Terminat" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Redenumire" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nume Nou:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Este necesar câmpul pentru noul nume" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Rulează Comanda Redenumire" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Redenumire efectuată" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Stare Text" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Stare Propietate" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Stare" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Selectează un Director" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Selectează un fișier" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Ești sigur că vrei sa continui?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Câmpurile url de la și la sunt amândouă necesare" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Mută" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Rulează Comanda Mută" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Mutare Finalizată" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revizia" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Autor" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Da" + +#: ui/changes.py:321 +msgid "No" +msgstr "" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Nu se poate adnota un director" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Adnotează - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Linia" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Text" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/D" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Acțiune" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Necunoscut" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Engleză" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Selectează un program" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Ești sigur că vrei să ștergi căile tale către depozitar?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Căile către depozitar șterse" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Ești sigur că vrei sa îți ștergi mesajul anterior?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Mesaj anterior șters" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Vrei să îți ștergi informațiile de autentificare?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Informații de autentificare șterse" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Trebuie să furnizați o cale pentru destinație." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Domeniu/etichetă" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Rulează comanda Domeniu/etichetă" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Domeniu/etichetă finalizat" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Blocat" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Blocare Terminată" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Comută" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Gazdă:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Nume" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Propietăți + %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Valoare" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Terminat" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Terminat" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Deblochează" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Se șterge..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Ștergere Finalizată" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Proprietăți pentru:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Proprietățile selectate vor fi aplicate recursiv." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Editează..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Nou..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Adaugă Mesaj" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Detalii Certificat" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Mesaj" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Mesaje Anterioare" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Ești sigur că vrei să ștergi %articol%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Acceptă O data" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Autentificare" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Verifică Certificat" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Confirmare" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Confirmare ștergere" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Interzice" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Amprentă:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Emitent:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Logare:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Parolă:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Mesaje Anterioare" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Proprietate" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Proprietate:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Domeniu:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Valid:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Valoare:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autori:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Mulțumiri" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limită:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Jurnal" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Reîmprospătare" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autentificare" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Mesaje Jurnal" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "Istorie URL" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Răsfoiește..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Activează embleme" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Activează atribute fișier" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Programe Externe" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "General" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Limbă:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Logare" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Număr mesaje de reținut" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Date Salvate" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Arată uneltele de depanare RabitVCS" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Tip:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Selecteză/Deselecteză tot" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Adnotează" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Mesaje de notifcare" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Din:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Opțiuni" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Recursiv" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Importă Mesaj" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Include fișiere ignorate" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Din URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignoră antecedent" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Asistent Ămbinare" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Înregistrează doar îmbinarea" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Arată jurnal" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Test Îmbinare" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/ru.po rabbitvcs-0.15.0.5/po/ru.po --- rabbitvcs-0.13.1/po/ru.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/ru.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2071 @@ +# Russian translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-12-03 19:19+0000\n" +"Last-Translator: Sergey Sedov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "прямо сейчас" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "%d минут(ы) назад" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i секунда" +msgstr[1] "%i секунды" +msgstr[2] "%i секунд" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i минута" +msgstr[1] "%i минуты" +msgstr[2] "%i минут" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i час" +msgstr[1] "%i часа" +msgstr[2] "%i часов" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Отладка" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Ошибки" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Открыть терминал" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Обновить статус" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Отладка отмены изменений" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Отменяет изменения во всем что видит" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Добавить Иконку" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Добавить иконку" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "Проверка..." + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Проверка рабочей копии" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Обновить" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Обновить рабочую копию" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Зафиксировать" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Зафиксировать изменения в репозитории" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Сравнить с предудыщей ревизией" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Показать лог" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Показать лог файла" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Добавить" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Добавить в игнор" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Обновить до ревизии..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Обновить файл до определенной ревизии" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Переименовать..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Удалить" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Откатить изменения" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Вернуть к исходному состоянию" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Разрешить конфликт" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Пометить конфликт как улаженный" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Восстановить" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Переселить..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Перебазировать рабочую копию" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Блокировка..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Разблокировка..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Разблокировать элемент" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Зачистить" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Зачистить рабочую копию" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" +"Экспортировать рабочую копию или репозиторий без информации о версионности" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Создать репозиторий здесь" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Создать репозиторий в папке" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Импорт" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Импортировать элемент в репозиторий" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Ветка/тэг..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Копировать элемент в другое место в репозитории" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Переключить..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Сменить адрес репозитория рабочей копии" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Слияние..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "Пошаговый мастер слияния" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Комментировать..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Комментировать файл" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Свойства" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Помощь" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Посмотреть помощь" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Настройки" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Просмотреть или изменить настройки RabbitVCS" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "О программе" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "О RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Открыть" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Просмотреть" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Обновление..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Обновление завершено" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Обновить до ревизии" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Извлечь" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Извлечение завершено" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Путь" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Расширение" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Загрузка..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Найдено %d элементов" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Добавление..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Добавлено" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Экспорт - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "Поля URL репозитория и путь назначения - обязательны." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Экспорт" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Экспортирование..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Экспорт завершен" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Применить патч" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "Применить патч к каталогу..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "Применение патча.." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "Патч применен" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Дата" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Сообщение" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Импорт - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Поле URL - обязательно" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Импортирование..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Импорт завершен" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Переименовать" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Новое имя:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Новое имя обазятельно!" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Переименовывание..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Переименовано" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Состояние текста" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Состояние" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Фиксация..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Фиксация завершена" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Состояние" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Запуск теста на слияние" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Тест слияния завершен" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Запуск слияния" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Слияние завершено" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Слить" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"В расширении RabbitVCS для Nautilus произошла ошибка. Свяжитесь с командой RabbitVCS и передайте детали ошибки ниже" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Выбор каталога" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "до" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Выбрать файл" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Сохранить как..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Вы действительно хотите продолжить?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "выбранные элементы" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "добавить папку в репозитори" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Восстановление исходного состояния..." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Исходное состояние восстановлено" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Поля URL и От - обязательны" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Переселить" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Переселение" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Переселение завершено" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Ревизия" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Автор" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "Просмотреть diff" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Сравнить рядом" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Разрешение конфликта..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Конфликт решен" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Дополнительные действия ..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "изменение" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Изменение свойства" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Да" + +#: ui/changes.py:321 +msgid "No" +msgstr "Нет" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "открыть с первой ревизии" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "открыть со второй ревизии" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Нельзя комментировать каталоги" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Комментировать - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Строка" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Текст" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "Начальная ревизия должно быть целое число" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Лог - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "Н/Д" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Действие" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Копия из пути" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Копия из ревизии" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Показать отличия между ревизиями" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Сравнить ревизии" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Показать отличия между ревизиями" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Английский" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Выбор программы" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Вы действительно хотите удалить адреса репозиториев?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Адреса репозиториев удалены" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Вы точно хотите удалить ваши предыдущие сообщения?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Предыдущие сообщения удалены" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Вы точно хотите удалить информацию об аутентификации?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Информация о аутентификации удалена" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Вы должны задать путь назначения." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Ветка/тэг" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Создание ветки/тэга..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Ветка/тэг создана" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Блокирован" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Заблокировать" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Блокировка..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Заблокировано" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "Укажите адрес репозитория" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Переключить" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Переключение" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Переключение завершено" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "Ведущая" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Хост:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Извлечь - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Извлечение исходников..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Имя" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Создать патч" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "Заданный путь не является рабочей копией" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "Создания файла патча" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "Патч создан" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Свойства - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Значение" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Тип mime" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Завершено" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Завершено" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Разблокировать" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Снатие блокировки..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Блокировка снята" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Размер" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Создать каталог..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Копировать в..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Скопировать адрес в буфер" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Переместить в..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "Куда вы хотите скопировать выделенное?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Новое место:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "Куда вы хотите переместить выделенное?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Зачистка..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Зачистка завершена" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Репозиторий успешно создан" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "Ошибка при создании репозитория. Убедитесь что папка пуста." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Свойства для:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Выбранные свойства будут применены рекурсивно." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Удалять свойства рекурсивно" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Редактирование..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Новый..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Путь:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Добавить сообщение" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Свойства сертификата" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Редактирование свойства" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Сообщение" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Пожалуйста добавьте информацию об аутентификации" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Предыдущие сообщения" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Вы действительно хотите удалить %item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Принять навсегда" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Принять единожды" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Применять свойства рекурсивно" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Аутентификация" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Проверить сертификат" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Подтверждение" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Удалить подтверждение" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Запретить" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Fingerprint:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Имя пользоввателя:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Пароль:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Предыдущие сообщения" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Свойство" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Свойство:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Область:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Сохранить аутентификацию" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "Элементы будут отправлены в корзину" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Действителен:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Значение:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Ссылки" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Информация о версии" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Авторы:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Спасибо:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Таблица ревизий" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Огрничение" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Лог" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Обновить" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Отображенные ревизии:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Остановиться на копировании" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Вызвана зачистка...\n" +"\n" +"Начать зачистку рабочей копии?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Аутентификация" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Сообщения лога" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Настройки журнала" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Программа используемая для сравнения файлов" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "История URL" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Обзор..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Удалить информацию об аутентификации" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Разрешить иконки" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Разрешить атрибуты файлов" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Разрешить рекурсивную проверку статуса" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Внешние Программы" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Общие" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Язык:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Журнал" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Максимальный уровень журнала" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Сколько URL'ов запоминать" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Сколько сообщений запоминать" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Сохраненные даныне" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Показать утилиты отладки RabbitVCS" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "Меню отладки используется для диагностики неполадок RabbitVCS" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Тип:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Файлы на блокировки" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Пожалуйста опишите причину блокировки этих файлов" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Блокировать файлы" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Выбрать / Снять выбор для всего" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Скрыть блокировки" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Из ревизии" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Комментировать" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Зафиксировать в:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Показать файлы без версии" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Сообщения оповещений" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Изменить репозиторий вашей рабочей копии" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Из:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "В:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Настройки" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Ревизия" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Без внешних включений" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Рекурсивно" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Сообщение Импортирования" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Репозиторий" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Включить игнорируемые файлы" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Из URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Из: (URL и ревизия для слития)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Диапозон ревизий" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "В: (URL и ревизия для слияния)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL для слияния из" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Рабочая копия" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Выберите этот метод если вы вносили изменения в ветку и желаете слить свои " +"изменения с другой веткой." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Выберите этот метод если вы хотите слить две разных ветки в свою рабочую " +"копию." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Игнорировать предков" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Помощник Слияния" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Слить диапозон ревизий" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Слить два различных дерева" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Только зарегистрировать слияние" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Показать лог" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Пробное слияние" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Используйте диалог лога для выбора ревизий для слияния. Или впишите ревизии " +"вручную через запятую. Вы можете указать диапазон через тире \n" +"\n" +"Пример: 4-7,9,11,15-HEAD\n" +"\n" +"Оставьте пустым для слияния всех ревизий." + +#~ msgid "Completed" +#~ msgstr "Завершено" + +#~ msgid "(no author)" +#~ msgstr "(без автора)" + +#~ msgid "Program used to browse repositories" +#~ msgstr "Программа для просмотра репозиториев" + +#~ msgid "Show new version on the right side" +#~ msgstr "Показывать новую версию справа" + +#~ msgid "Update Depth" +#~ msgstr "Глубина обновления" + +#~ msgid "Added" +#~ msgstr "Добавлено" + +#~ msgid "Merged" +#~ msgstr "Слито" + +#~ msgid "Create copy from" +#~ msgstr "Создать копию из" + +#~ msgid "Missing" +#~ msgstr "Пропущен" + +#~ msgid "Unchanged" +#~ msgstr "Не изменен" + +#~ msgid "External" +#~ msgstr "Внешний" + +#~ msgid "Replaced" +#~ msgstr "Заменен" + +#~ msgid "Skipped" +#~ msgstr "Пропущен" + +#~ msgid "Updated" +#~ msgstr "Обновлен" + +#~ msgid "Unlocked" +#~ msgstr "Разблокирован" + +#~ msgid "Deleted" +#~ msgstr "Удален" + +#~ msgid "Restored" +#~ msgstr "Восстановлен" + +#~ msgid "Resolved" +#~ msgstr "Улажен" + +#~ msgid "Destination:" +#~ msgstr "Назначение:" + +#~ msgid "Annotated" +#~ msgstr "Прокомментировано" diff -Nru rabbitvcs-0.13.1/po/sk.po rabbitvcs-0.15.0.5/po/sk.po --- rabbitvcs-0.13.1/po/sk.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/sk.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2089 @@ +# Slovak translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-02-09 10:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Správa o ladení" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Chyby" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Otvoriť shell" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Obnoviť stav" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Vráti všetko viditeľné" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Zruší" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Pridať znak" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Pridať nejaký znak" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Pozrite sa na pracovnú kópiu" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Aktualizácia" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Aktualizovať pracovnú kópiu" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Odovzdať" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Rešpektovať zmeny repozitára" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Zobrazenie zmien do súboru" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Zobraziť záznam" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Pridať" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Pridať do zoznamu ignorovaných" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Aktualizácia revízie" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Aktualizácia súboru do určenej revízie" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Premenovať" + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Odstrániť" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Späť" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Vrátiť položku do jej nezmeneného stavu" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Riešenie" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Označiť položku v rozpore ako vyriešenú" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Obnoviť" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Premiestniť..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Premiestniť vašu pracovnú kópiu" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Lokálny zámok položky" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Vydanie zámku ..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Vydanie zámku na položku" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Čistenie" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Vyčistiť pracovnú kópiu" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "Exportovať pracovnú kópiu alebo repozitáre bez informácie o verzii" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Vytvoriť repozitáre tu" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Vytvoriť repozitáre v priečinku" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Import" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Importovať položky do repozitára" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Branch/tag..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Kopírovať položku na iné miesto v repozitári" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Prepni..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Zmeniť umiestnenie repozitára pracovnej kópie" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Zlúčiť..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "A sprievodca s krokmi pre zlúčenie" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Komentovať..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Komentovať súbor" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Vlastnosti" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Pozrieť vlastnosti položky" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Pomocník" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Pozrieť pomocníka" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Nastavenia" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Pozrieť alebo zmeniť nastavenia RabbitVCS" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "O" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "O RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Otvoriť" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Prehľadávať" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Aktualizácia..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Aktualizácia dokončená" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Aktualizovať revíziu" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Vyskúšanie" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Vyskúšanie ukončené" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Cesta" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Rozšírenie" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Načítavam..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Nájdená %d položka(y)" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Spúšťam príkaz na pridanie" + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Pridanie ukončené" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Export - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Export" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Spúšťam príkaz na export" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Export ukončený" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Dátum" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Spráava" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Import - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Spúšťam príkaz na importovanie" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Import ukončený" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Premenovať" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nový názov" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Vyžadovaný je nový názov poľa" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Spúšťam príkaz na premenovanie..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Premenovanie dokončené" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Stav textu" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Stav objektu" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Spúšťam príkaz na odovzdanie" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Odovzdanie ukončené" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Stav" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Spúšťam test zlúčenia" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Test zlúčenia ukončený" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Spúšťam príkaz na zlúčenie" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Zlúčenie ukončené" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Zlúčenie" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Vyber priečinok" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "do" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Vyber súbor" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Ste si istý že chcete pokračovať?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "vybraná položka(y)" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Spúšťam spätný príkaz" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Návrat ukončený" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Premiestniť" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Spúšťam príkaz na premiestnenie..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Premiestnenie ukončené" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revízia" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Autor" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Spúšťam príkaz na riešenie" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Riešenie ukončené" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Ano" + +#: ui/changes.py:321 +msgid "No" +msgstr "" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Nemožno komentovať adresár" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Komentovať -%s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Riadok" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Text" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Záznam - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "N/A" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Akcia" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Kopírovať zo záznamu" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Kopírovať z revízie" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Neznáme" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Anglicky" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Vyberte program" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Ste si istí, že chcete vymazať vašu cestu k repozitárom?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Cesta k repozitárom vymazaná" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Ste si istý, že chcete vymazať vaše predchádzajúce správy?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Predchádzajúce správy vymazané" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Ste si istí, že chcete vymazať vaše autentizačný údaje?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Autentizačný údaje vymazané" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Musíte zadať cieľ umiestnenia." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Zamknutý" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Zamknite" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Spúšťam príkaz na zamknutie" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Zamknutie ukončené" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Prepnúť" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Spúšťam príkaz na prepnutie" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Prepnutie dokončené" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Hostiteľ:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Vyskúšanie - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Spúšťam test na vyskúšanie" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Názov" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Vlastnosti - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Hodnota" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Dokončené" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Dokončené" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Odomknúť" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Spúšťam príkaz na odomknutie" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Odomknutie dokončené" + +#: ui/browser.py:89 +msgid "Size" +msgstr "" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Vyčistené..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Čistenie ukončené" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Repozitár úspešne vytvorený" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Došlo ku chybe pri vytváraní repozitára. Uistite sa, či je príslušná zložka " +"prázdna." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Vlastnosti pre:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "Vybrané vlastnosti budú použité rekurzívne." + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Odstrániť vlastnosti rekurzívne" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Editovať..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Nový..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Cesta:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Pridať správu" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Podrobnosti certifikátu" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Upraviť vlastnosť podrobností" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Správa" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Prosím pridajte vaše podrobnosti o overení" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Predchádzajúce správy" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "Naozaj chcete zmazať %položku%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Prijať navždy" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Prijať iba teraz" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Autentizácia" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Skontrolujte Certifikát" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Potvrdenie" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Odstráň potvrdenie" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Odmietnuť" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Odtlačok prsta:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Emitent:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Prihlasovacie meno:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Heslo:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Predchádzajúca správa" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Vlastnosť" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Vlastnosť:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Oblasť:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Uložiť overenie" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "Položka(y) bude zaslaná do koša." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Platné:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Hodnota:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Linky" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Informácie o verzii" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Autori:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Poďakovanie" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Revízna tabuľka" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Limit:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Záznam" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Obnoviť" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Zobraziť revízie:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Stop na kópiu" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Požadované čistenie....\n" +"\n" +"Otvorenie pracovnej kópie čistenia?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autentizácia" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Záznam správ" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Možnosti zaznamenávania" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Program používaný na porovnávanie súborov" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "URL História" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Prehľadávať..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Vymazať vaše overovacie informácie" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Povoliť emblémy" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Povoliť atribúty súborov" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Povoliť kontrolu rekurzívneho stavu" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Externé programy" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Všeobecné" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Jazyk:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Prihlásenie" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Počet adries URL k zapamätaniu" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Počet správ k zapamätaniu" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Uložené údaje" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Typ" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Súbory na zamknutie" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Opíšte prosím, prečo tieto súbory zamykáte" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Zamknúť súbory" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Vybrať / Zrušiť všetko" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Prevziať zámky" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Z Revízie" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Do Revízie" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Komentovať" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Odovzdať do:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Zobraziť neverziované súbory" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Oznamovacie Správy" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Zmeniť repozitár vašej pracovnej kópie" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Z..." + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Do:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Voľby" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revízia" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Rekurzívny" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Import správy" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Repozitáre" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Zahrnúť ignorované súbory" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "z URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Od: (URL a revíziu zlúčiť)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Rozsah revízie" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Do: (URL a revíziu zlúčiť)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL zlúčiť od" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Pracovná kopia" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Vyberte túto možnosť, ak ste urobili nejaké zmeny vo vetvách a chcete zlúčiť " +"vaše zmeny s inou vetvou." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Vyberte túto možnosť, ak chcete zlúčiť dve rôzne vetvy do vašej pracovnej " +"kópie." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignorovať rod" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Zlúčiť pomocníka" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Zlúčiť niekoľko revízií" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Zlúčenie dvoch rôznych stromov" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Iba záznam zlúčenia" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Ukázať záznam" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Test zlúčenia" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" + +#~ msgid "Completed" +#~ msgstr "Ukončené" + +#~ msgid "(no author)" +#~ msgstr "(bez autora)" + +#~ msgid "Switch Details" +#~ msgstr "Prepnúť detaily" + +#~ msgid "Create copy from" +#~ msgstr "Vytvoriť kópiu z" + +#~ msgid "Show new version on the right side" +#~ msgstr "Zobraziť novú verziu na pravej strane" + +#~ msgid "Destination:" +#~ msgstr "Destinácia:" + +#~ msgid "Deleted" +#~ msgstr "Odstránené" + +#~ msgid "Copied" +#~ msgstr "Skopírované" + +#~ msgid "Added" +#~ msgstr "Pridané" + +#~ msgid "Restored" +#~ msgstr "Obnovené" + +#~ msgid "Reverted" +#~ msgstr "Vrátenie" + +#~ msgid "Failed Revert" +#~ msgstr "Chybné vrátennie" + +#~ msgid "Resolved" +#~ msgstr "Vyriešené" + +#~ msgid "External" +#~ msgstr "Vonkajšie" + +#~ msgid "Failed Unlock" +#~ msgstr "Zlyhalo odomknutie" + +#~ msgid "Failed Lock" +#~ msgstr "Zlyhalo zamknutie" + +#~ msgid "Updated" +#~ msgstr "Aktualizované" + +#~ msgid "Modified" +#~ msgstr "Modifikované" + +#~ msgid "Replaced" +#~ msgstr "Nahradené" + +#~ msgid "Changed" +#~ msgstr "Zmenené" + +#~ msgid "Skipped" +#~ msgstr "Preskočené" + +#~ msgid "Annotated" +#~ msgstr "Poznamenané" + +#~ msgid "Unlocked" +#~ msgstr "Odomknuté" + +#~ msgid "Conflicted" +#~ msgstr "V rozpore" + +#~ msgid "Inapplicable" +#~ msgstr "Nepoužitelné" + +#~ msgid "Missing" +#~ msgstr "Stratené" + +#~ msgid "Merged" +#~ msgstr "Zlúčené" + +#~ msgid "Obstructed" +#~ msgstr "Upchané" + +#~ msgid "Unchanged" +#~ msgstr "Nezmenené" + +#~ msgid "Program used to browse repositories" +#~ msgstr "Program používaný na prezeranie repozitára" diff -Nru rabbitvcs-0.13.1/po/sl.po rabbitvcs-0.15.0.5/po/sl.po --- rabbitvcs-0.13.1/po/sl.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/sl.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1991 @@ +# Slovenian translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-02-09 10:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovenian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || " +"n%100==4 ? 3 : 0);\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Posodobi" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Potrdi" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Dodaj" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Dodaj na seznam 'ignore'" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "" + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Izbriši" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Povrni" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Razreši" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Obnovi" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Počisti" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Uvozi" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "" + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Brskaj" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Posodabljanje ..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Posdabljanje končano" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Poveži in pridobi iz repozitorija" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Povezovanje z repozitorijem in pridobivanje zaključeno" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Pot" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Končnica" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Nalaganje ..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Najdeno %d element(ov)" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Zaganjam dodajanje..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Končano dodajanje." + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Izvozi - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Izvozi" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Izvoz zaključen" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Sporočilo" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Uvozi - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Uvoz zaključen" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Stanje besedila" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Stanje lastnosti" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Zaganjam Potrdi" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Končano potrjevanje" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Spoji" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Izberi mapo" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "v" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Izberite datoteko" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Razrešitev zaključena" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Da" + +#: ui/changes.py:321 +msgid "No" +msgstr "" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Besedilo" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Dnevnik - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "Ni na voljo" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Dejanje" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Kopiraj iz revizije" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Izberi program" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Ali ste prepričani, da želite izbrisati poti repozitorijev?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Poti repozitorijev izbrisane." + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Ali ste prepričani, da želite izbrisati prejšnja sporočila?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Prejšnja sporočila izbrisana" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Določiti morate ciljno pot." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Vejitev/oznaka" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Zaklenjeno" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Prevzami zaklepanje" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Zaklepanje zaključeno" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Preklopi" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Poveži in pridobi iz repozitorija - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Povezovanje z repozitorijem in pridobivanje..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Naziv" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "Izdelaj obliž (patch)" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Vrednost" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Vrsta MIME" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Zaključeno" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Zaključeno" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Odkleni" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Čiščenje..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Čiščenje zaključeno" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Repozitorij je izdelan" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "" + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "" + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "" + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Od:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Za:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Pokaži dnevnik" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/sr.po rabbitvcs-0.15.0.5/po/sr.po --- rabbitvcs-0.13.1/po/sr.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/sr.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1991 @@ +# Serbian translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-06-24 21:05+0000\n" +"Last-Translator: Игор Миловановић \n" +"Language-Team: Serbian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Додај" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "" + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "" + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "" + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Путања" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Проширење" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Учитавам..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "" + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "Примени закрпу" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Датум" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Ревизија" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Аутор" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "" + +#: ui/changes.py:321 +msgid "No" +msgstr "" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Ред" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Текст" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Акција" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "" + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "MIME тип" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Завршен" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Лог порука" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Величина" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "" + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "" + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "" + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "" + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/sv.po rabbitvcs-0.15.0.5/po/sv.po --- rabbitvcs-0.13.1/po/sv.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/sv.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,2100 @@ +# Swedish translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-04-13 19:52+0000\n" +"Last-Translator: Andreas Dahlberg \n" +"Language-Team: Swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i sekund" +msgstr[1] "%i sekunder" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minut" +msgstr[1] "%i minuter" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i timme" +msgstr[1] "%i timmar" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i dag" +msgstr[1] "%i dagar" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i vecka" +msgstr[1] "%i veckor" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i månad" +msgstr[1] "%i månader" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i år" +msgstr[1] "%i år" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "Felsök" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Buggar" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "Öppna Skal" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "Uppdatera Status" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "Debug återställ" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "Återställer allt den ser" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "Ogiltigförklara" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "Tvinga fram ett invalidate_extension_info() anrop" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "Lägg till emblem" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "Lägg till ett emblem" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "Hämta en arbetskopia" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "Uppdatera" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "Uppdatera en arbetskopia" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "Skicka" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "Skicka ändringar till arkivet" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "Skillnadsmeny..." + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "Se skillanden mot grunden" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "Visa ändringar som gjorts i en fil" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "Se skillnaden mellan filer/mappar" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "Se skillnaden mellan två filer" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "Visa skillnaden mot tidigare revision" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "Se filändringar sedan senaste ändring" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "Jämför med grunden" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "Jämför filer/mappar" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "Jämför skillnaden mellan två objekt" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "Jämför med föregående revision" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "Visa ändringar..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "Visa Logg" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "Visa en fils logginformation" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "Lägg till" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "Lägg till ignoreringslista" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "Uppdatera till revision..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "Uppdatera till angiven version" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "Byt namn..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "Schemalägg ett objekt som ska byta namn i arkivet" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "Ta bort" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "Schemalägg ett objekt som ska tas bort från arkivet" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "Återställ" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "Återställ ett objekt till dess omodifierade form" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "Lös" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "Markera ett tvistande objektet som löst" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "Återställ" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "Återställ ett saknat objekt" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "Flytta..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "Flytta din arbetskopia" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "Hämta Lås..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "Lås objekt lokalt" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "Släpp lås..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "Släpp lås på ett objekt" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "Rensa" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "Rensa upp arbetskopia" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "Exportera..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "Exportera en fungerande kopia eller arkiv utan versionsinformation" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "Skapa arkiv här" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "Skapa ett arkiv i en mapp" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "Importera" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "Importera ett objekt till ett arkiv" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "Gren/tagg..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "Kopiera et objekt till en annan plats i arkivet" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "Växla..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "Ändra arkivets plats för en arbets kopia" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "Sammanfoga..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "En guide med åtgärder för sammanfogning" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "Kommentera..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "Kommentera en fil" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "Egenskaper" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "Visa egenskaperna för ett objekt" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "Hjälp" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "Visa Hjälp" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "Inställningar" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "Visa eller ändra RabbitVCS inställningar" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "Om" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "Om RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "Öppna" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "Bläddra till" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "Uppdaterar..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "Uppdatering färdig" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "Uppdatera till revision" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "Hämta" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "Färdig Hämta" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "Sökväg" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "Tillägg" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "Laddar..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "Hittade %d objekt" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "Kör Lägg till..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Färdig Lägga till" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "Revision:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "Exportera - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "Arkivets URL och destination sökvägen är obligatoriska fält." + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "Exportera" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "Kör Exportera..." + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Färdig Exportera" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "Datum" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "Meddelande" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "Importera - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "Arkivets URL fält krävs." + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "Kör Importera..." + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Färdig Importera" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "Byt namn" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "Nytt namn:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "Det nya namnet är ett obligatoriskt fält" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "Kör Byt namn..." + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "Namnbyte genomfört" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "Textstatus" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "Egenskap status" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "Kör Skicka..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "Färdig Skicka" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "Status" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "Kör Sammanfogningstest..." + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "Färdig Sammanfogningstest" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "Kör Sammanfoga..." + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "Färdig Sammanfoga" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "Sammanfoga" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "Välj en mapp" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "till" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "Välj en fil" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "Spara som..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "Är du säker på att du vill fortsätta?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "de markerade objekten" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "Kör Återställ..." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "Färdig Återställ" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "Både från och till url-fälten krävs." + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "Omlokalisera" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "Kör omlokalisering..." + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "Omlokalisering färdig" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "Revision" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "Författare" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "Jämför sida vid sida" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "Kör Lös..." + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Färdig Lös" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "Mer åtgärder..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "Egenskapsändring" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "Ja" + +#: ui/changes.py:321 +msgid "No" +msgstr "Nej" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "Det går inte att kommentera en katalog" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "Kommentar - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "Rad" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "Text" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "Från version fältet måste vara ett heltal" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "Logg - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "Ej tillgänglig" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "Åtgärd" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "Kopiera från sökväg" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "Kopiera från version" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "Visa skillnaden mot arbetskopian" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "Se skillnaden mellan revisioner" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "Jämför med arbetskopia" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "Jämför revisioner" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "Visa ändringar mellan revisioner" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "Ändra skapare..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "Redigera loggmeddelande..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "Redigera revisionsinställningar..." + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "Ändra skapare" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "Redigera loggmeddelande" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "Okänd" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "Engelska" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "Välj ett program" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "Är du säker på att du vill rensa dina arkivs sökvägar?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "Arkivets sökvägar rensade" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "Är du säker på att du vill rensa dina tidigare meddelanden?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "Tidigare meddelanden rensade" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "Är du säker på att du vill rensa din autentiseringsinformation?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "Autentiseringsinformation rensad" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "Du måste ange en destinationssökväg." + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "Gren/tagg" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "Kör Gren/tagg kommando..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "Färdig Gren/tagg..." + +#: ui/lock.py:73 +msgid "Locked" +msgstr "Låst" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "Hämta lås" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "Kör Hämta lås..." + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Färdig Hämta lås" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "Arkivets plats är ett obligatoriskt fält." + +#: ui/switch.py:80 +msgid "Switch" +msgstr "Växla" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "Kör Växla..." + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "Färdig Växla" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "Nummer" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "Arbetskopia" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "Värd:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "Hämta - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "Kör Hämta..." + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "Namn" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "Den angivna sökvägen är inte en arbetskopia" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "Egenskaper - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "Värde" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "Ett problem uppstod när dina inställningar skulle sparas." + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "Filen är inte versionskontrollerad" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "Reserverad" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "Mime-typ" + +#: ui/action.py:338 +msgid "Finished" +msgstr "Färdig" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - Färdigt" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "Loggmeddelande" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "Lås upp" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "Kör Lås upp..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "Färdig Lås upp" + +#: ui/browser.py:89 +msgid "Size" +msgstr "Storlek" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "Skapa mapp..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "Kopiera till..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "Kopiera URL till urklipp" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "Flytta till..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "Ny plats:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "Rensar upp..." + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "Rensning färdig" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "Arkivet skapades" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" +"Det blev fel när arkivet skulle skapas. Kontrollera att den angivna mappen " +"är tom." + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "Egenskaper för:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "Radera inställningar rekursivt" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "Redigera..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "Ny..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/Sökväg:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "Ladda/Uppdatera" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "Lägg till Meddelande" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "Certifikatdetaljer" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "Redigera egenskapsdetaljer" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "Mappnamn" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "Meddelande" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "Lägg till autentiseringsdetaljer" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "Föregående Meddelanden" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" +"Är du säker på att du vill ta bort %item%?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "Acceptera för alltid" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "Acceptera en gång" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "Verkställ inställningar rekursivt" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "Autentisering" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "Kontrollera certifikat" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "Bekräftelse" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "Skapa mapp..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "Radera Bekräftelse" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "Neka" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "Fingeravtryck:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "Utgivare:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "Användarnamn:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "Lösenord:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "Sökväg:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "Föregående meddelande" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "Egenskap" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "Egenskap:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "RabbitVCS Fel" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "Rike:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "Spara autentisering" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "Dessa objekt kommer att skickas till papperskorgen." + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "Giltig:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "Värde:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "Länkar" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "Versionsinformation" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "Upphovsmän:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "Tack:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "Påverkade filer (dubbelklicka för att jämföra med grunden)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "Revisionstabell" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "Gräns:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "Logg" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "Uppdatera" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "Visar revisioner:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "Stopp vid kopia" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"Rensning begärd ....\n" +"\n" +"Börja rensa i arbets kopian?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "Autentisering" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "Loggmeddelanden" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "Logg alternativ" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "Program som används för att jämföra filer" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "URL Historik" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "Bläddra..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "Rensa autentiseringsinformation" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "Aktivera emblem" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "Aktivera filattribut" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "Aktivera rekursiva statuskontroller" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "Externa program" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "Allmänt" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "Språk:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "Loggning" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "Lägsta nivå att logga" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "Antal URLer att minnas" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "Antal meddelande att minnas" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "Sparad data" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "Visa RabbitsVCS felsökningsverktyg" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "Typ:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "Filer att låsa" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "Beskriv varför du låser dessa filer" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "Lås filer" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "Markera / Avmarkera alla" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "Stjäl låsen" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "Från revision" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "Till revision" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "Kommentar" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "Ändrade filer" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "Skicka till:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "Visa oversionerade filer" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "Notifieringsmeddelanden" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "Arbetskopia:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "Egenskapseditor" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "Ändra arkiv till din arbetskopia" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "Från:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "Till:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "Alternativ" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "Revision" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "Uteslut externa" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "Rekursiv" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "Importera meddelande" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "Arkiv" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "Inkludera ignorerade filer" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "Från URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "Från: (URL och revision sammanfogning)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "Revisionsspan" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "Till: (URL och revision att sammanfoga)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "URL att sammanfoga från" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "Arbetskopia" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" +"Välj denna metod om du har gjort ändringar i en gren och vill sammanfoga " +"dina ändringar med en annan gren." + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" +"Välj den här metoden om du vill sammanfoga två olika grenar i din " +"arbetskopia." + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "Ignorera anor" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "Sammanfogningsassistent" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "Sammanfoga ett span av revisioner" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "Sammanfoga två olika träd" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "Registrera endast sammanfogningen" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "Visa logg" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "Test sammanfoga" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"Använd logg dialogrutan för att välja de revisioner som du vill sammanfoga. " +"Eller skriv ut revisionerna manuellt, separerade med ett kommatecken. Du kan " +"ange ett revisionsspan med ett bindestreck.\n" +"\n" +"Exempel: 4-7,9,11,15-HEAD\n" +"\n" +"För att sammanfoga alla revisioner, lämna rutan tom." + +#~ msgid "(no author)" +#~ msgstr "(ingen författare)" + +#~ msgid "Create copy from" +#~ msgstr "Skapa kopia från" + +#~ msgid "Completed" +#~ msgstr "Färdig" + +#~ msgid "Switch Details" +#~ msgstr "Växlings detaljer" + +#~ msgid "Program used to browse repositories" +#~ msgstr "Program som används för att bläddra i arkiv" + +#~ msgid "Show new version on the right side" +#~ msgstr "Visa nya versionen på höger sida" + +#~ msgid "Added" +#~ msgstr "Tillagd" + +#~ msgid "Copied" +#~ msgstr "Kopierad" + +#~ msgid "Deleted" +#~ msgstr "Borttagen" + +#~ msgid "Restored" +#~ msgstr "Återställd" + +#~ msgid "Resolved" +#~ msgstr "Löst" + +#~ msgid "External" +#~ msgstr "Extern" + +#~ msgid "Modified" +#~ msgstr "Modifierad" + +#~ msgid "Replaced" +#~ msgstr "Ersatt" + +#~ msgid "Changed" +#~ msgstr "Ändrad" + +#~ msgid "Annotated" +#~ msgstr "Kommenterad" + +#~ msgid "Unlocked" +#~ msgstr "Upplåst" + +#~ msgid "Failed Lock" +#~ msgstr "Misslyckades låsa" + +#~ msgid "Failed Unlock" +#~ msgstr "Misslyckades låsa upp" + +#~ msgid "Inapplicable" +#~ msgstr "Oapplicerbart" + +#~ msgid "Unchanged" +#~ msgstr "Oförändrad" + +#~ msgid "Missing" +#~ msgstr "Saknas" + +#~ msgid "Obstructed" +#~ msgstr "Blockerad" + +#~ msgid "Merged" +#~ msgstr "Sammanfogad" + +#~ msgid "Conflicted" +#~ msgstr "Tvistande" + +#~ msgid "Update Depth" +#~ msgstr "Uppdateringsdjup" + +#~ msgid "Destination:" +#~ msgstr "Mål:" + +#~ msgid "Reverted" +#~ msgstr "Backad" + +#~ msgid "Failed Revert" +#~ msgstr "Misslyckad backning" + +#~ msgid "Skipped" +#~ msgstr "Överhoppad" + +#~ msgid "Updated" +#~ msgstr "Uppdaterad" diff -Nru rabbitvcs-0.13.1/po/th.po rabbitvcs-0.15.0.5/po/th.po --- rabbitvcs-0.13.1/po/th.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/th.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1990 @@ +# Thai translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-02-09 10:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Thai \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "" + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "" + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "" + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "" + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "" + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "" + +#: ui/changes.py:321 +msgid "No" +msgstr "" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "" + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "" + +#: ui/action.py:338 +msgid "Finished" +msgstr "" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "" + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "" + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "" + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "" + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "" + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "" + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "" + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/po/zh_CN.po rabbitvcs-0.15.0.5/po/zh_CN.po --- rabbitvcs-0.13.1/po/zh_CN.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/zh_CN.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1992 @@ +# Chinese (Simplified) translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-08-14 14:07+0000\n" +"Last-Translator: Jiehan Zheng \n" +"Language-Team: Chinese (Simplified) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i 秒" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i 分钟" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i 小时" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i 天" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i 周" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i 月" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i 年" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "调试" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "Bugs" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "打开 Shell" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "刷新状态" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "调试还原" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "还原看到的每个文件" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "使无效" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "强行调用 invalidate_extension_info()" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "添加徽章" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "添加一个徽章" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "检出(Checkout)..." + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "检出工作版本" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "更新" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "更新工作版本" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "提交" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "提交修改至源码库" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "版本库浏览器" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "浏览源码库源码树" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "检查修改..." + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "检查至源码库的修改" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "比较菜单..." + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "比较选项列表" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "查看相对于 Base 的差异" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "查看对文件的修改" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "查看文件/文件夹之间的差异" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "查看两个文件之间的差异" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "查看相对于前一个版本的差异" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "查看自从上一次修改后对文件的改动" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "与 Base 进行比较" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "使用并排比较工具与 Base 进行比较" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "比较文件/文件夹" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "比较两个项目间的差异" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "与前一个版本进行比较" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "使用并排比较工具与前一个版本进行比较" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "显示修改..." + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "显示路径与版本间的改动" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "显示日志" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "显示文件日志信息" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "添加" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "计划要添加至仓库的项" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "添加至忽略列表" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "更新到版本..." + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "更新文件至指定版本" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "重命名..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "计划一个项目在源码库被重命名" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "删除" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "计划一个项目在源码库被删除" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "恢复" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "还原项目到其未修改的状态" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "解决" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "标记冲突条目为已解决" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "恢复" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "恢复丢失项目" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "重定位..." + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "重定位您的工作副本" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "获得锁..." + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "本地锁定项目" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "释放锁..." + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "释放项目的锁" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "清理" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "清理工作副本" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "导出..." + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "导出工作副本或源码库,而不包含任何版本信息" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "在这里创建源码库" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "在文件夹中创建一个源码库" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "导入" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "导入一个项目至源码库" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "分支/标签..." + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "复制一个项目到源码库中其它位置" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "切换..." + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "改变工作副本源码库的位置" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "合并..." + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "一个由几个步骤组成的合并向导" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "批注..." + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "批注一个文件" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "生成补丁..." + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "对您所有的修改创建一个 unified diff 文件" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "应用补丁..." + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "应用 unified diff 至工作副本" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "属性" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "查看一个项目的属性" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "帮助" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "查看帮助" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "设置" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "查看或更改 RabbitVCS 设置" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "关于" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "关于 RabbitVCS" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "打开" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "打开一个文件" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "浏览至" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "浏览至一个文件或文件夹" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "还原属性" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "还原该属性至其原状态" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "还原属性 (递归的)" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "还原该属性至其原状态 (递归的)" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "删除属性" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "删除该属性" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "删除该属性 (递归的)" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "按文件名忽略项目" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "按扩展名忽略项目" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "更新..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "完成的更新" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "更新到修订版" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "检出" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "完成签出" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "路径" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "扩展" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "加载中..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "已找到 %d 项" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "正执行 Add 命令" + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "Add 完成" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "版本:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "导出 - %s" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "“仓库 URL”和“目的地路径”均必填。" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "导出" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "正运行 Export 命令" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "Export 完成" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "应用补丁" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "对目录应用补丁..." + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "从文件应用补丁..." + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "已应用补丁文件" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "日期" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "消息" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "导入 - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "“仓库 URL”必填。" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "正运行 Import 命令" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "Import 完成" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "重命名" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "新名字:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "新名称一栏必填" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "正运行重命名命令" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "重命名完成" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "文本状态" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "属性状态" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "正在运行提交命令..." + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "提交完成" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "状态" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "并排比较查看差异" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "运行合并测试" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "完成合并测试" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "正在运行合并命令" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "合并完成" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "合并" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" +"RabbitVCS Nautilus 扩展发生了一个错误。请联系RabbitVCS 团队并提供下列错误细节:" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "选择一个文件夹" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "到" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "选择一个文件" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "另存为…" + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "您确定要继续吗?" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "已选择的项" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "添加一个文件夹到版本库" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "运行还原命令..." + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "完成还原" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "来自和到 URL 栏均为必填" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "重新分配" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "正运行重分配命令" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "重分配完毕" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "修订版" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "作者" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "查看统一差异" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "并排比较" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "正运行 Resolve 命令" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "Resolve 完成" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "更多操作..." + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "更改" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "属性改变" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "确定" + +#: ui/changes.py:321 +msgid "No" +msgstr "否" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "从第一个版本打开" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "从第二个版本打开" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "不能给目录加注释" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "注释 - %s" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "明细" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "文本" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "来自修订版一栏必须为整数" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "日志 - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "不可用" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "操作" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "复制自路径" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "复制自版本" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "查看相对于工作版本的差异" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "查看版本间差异" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "与工作版本进行比较" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "比较版本" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "显示版本之间的更改" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "编辑作者..." + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "编辑日志消息..." + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "编辑版本属性..." + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "编辑作者" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "编辑日志消息" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "未知" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "英语" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "选择一个程序" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "您确定要清空您的仓库路径?" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "仓库路径已清空" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "您确定要清空您之前的消息?" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "以往消息已清空" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "您确定要清空您的认证信息?" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "认证信息已清空" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "无法获取属性列表" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "必须提供目标路径。" + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "分支/tag" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "正运行 Branch/tag 命令..." + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "完成的 分支/tag" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "已锁定" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "获得 Lock" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "正运行 Lock 命令" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "Lock 完成" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "仓库地址栏必填。" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "切换" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "正在运行切换命令..." + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "切换完成" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "HEAD" + +#: ui/widget.py:860 +msgid "Number" +msgstr "" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "工作副本" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "主机:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "签出 - %s" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "正在运行签出命令" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "名称" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "生成补丁" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "指定路径不是工作副本" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "正在生成补丁文件..." + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "已生成补丁文件" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "属性 - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "值" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "保存属性时出现了一个问题。" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "注意: 属性修改会立即被应用。您可以使用每项的上下文菜单来回顾或撤销修改。\n" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "您想从该目录下所有文件和子目录中删除选中的属性么?" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "文件不受版本控制" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "保留的" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "不能为属性设置新值" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "MIME 类型" + +#: ui/action.py:338 +msgid "Finished" +msgstr "已完成" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - 完成" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "日志信息" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "解锁" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "正在运行解锁命令..." + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "解锁完成" + +#: ui/browser.py:89 +msgid "Size" +msgstr "文件大小" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "创建目录..." + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "复制到 ..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "复制URL到剪切板" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "移动到..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "将选区复制到哪?" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "新位置:" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "将选区移动到哪?" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "正清理" + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "清理完成" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "版本仓库创建成功" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "版本库创建过程中出现错误。请确认所指定目录是空的。" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "属性属于:" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "选中的属性将会被递归应用。" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "递归删除属性" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "编辑..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "新建..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "URL/路径:" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "加载/刷新" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "添加消息" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "认证细节" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "编辑属性细节" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "文件夹名称" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "消息" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "请添加您的认证细节" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "请提供您的 SSL 证书文件" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "前一个消息" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "您确实要删除 %item% 吗?" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "RabbitVCS 错误" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "总是接受" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "接受一次" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "递归应用属性" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "认证" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "检查证书" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "确认" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "创建文件夹..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "删除确认" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "拒绝" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "指纹:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "颁发者:" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "登录:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "密码:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "路径:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "前一个消息" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "属性" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "属性:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "RabbitVCS 错误" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "域:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "SSL 客户端证书" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "保存认证" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "文本更改" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "这些会被发送到回收站" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "有效:" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "值:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "链接" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "版本信息" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "作者:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "感谢:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "受影响的文件 (双击会比较 Base)" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "版本表" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "限制:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "日志" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "刷新" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "正在显示版本:" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "终止于复制" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" +"清理请求....\n" +"\n" +"开始工作副本清理么?" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "身份验证" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "日志信息" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "日志选项" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "用于比较文件的程序" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "RabbitVCS" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "URL 历史" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "浏览..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "清除你的认证信息" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "启用徽章" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "启用文件属性" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "启用递归状态检查" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "外部程序" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "常规" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "语言:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "日志" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "最小日志级别" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "记住的 URL 数目" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "记住的信息数量" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "已保存的数据" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "显示 RabbitVCS 调试工具" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "调试菜单用于诊断 RabbitVCS 自身的问题" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "类型:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "要锁定的文件" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "请描述您锁定这些文件的原因" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "锁定文件" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "选择 / 取消选择 全部" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "偷锁" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "从版本" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "至版本" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "注释" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "更改的文件 (双击会比较 Base)" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "提交给:" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "显示非版本控制的文件" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "通知信息" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "远程 URI:" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "工作副本:" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "添加一个新的属性。" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "关闭这个对话框。" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "属性编辑器" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "刷新属性列表" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "改变您工作副本的属性" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "从:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "至:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "选项" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "版本" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "省略外部" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "递归" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "导入消息" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "版本库" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "包括已忽略的文件" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "来自URL" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "来自:(URL 和要合并的版本)" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "版本范围" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "至:(URL 和要合并的版本)" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "要合并自 URL" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "工作副本" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "如果您对某个分支进行了修改,并且想将这些修改与另一分支合并,选择这种方法。" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "如果您想合并两个不同的分支到您的工作副本的话,请选择这个方法。" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "忽略早期的" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "合并助手" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "合并一个范围的版本" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "合并两个不同的源码树" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "仅记录合并" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "显示日志" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "测试合并" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" +"使用日志对话框来选择您想合并的版本。或者手动指定版本,用逗号分割。您可以通过减号\"-\"来指定一个版本范围。\n" +"\n" +"例如:4-7,9,11,15-HEAD\n" +"\n" +"要合并所有分支请保持空白。" diff -Nru rabbitvcs-0.13.1/po/zh_TW.po rabbitvcs-0.15.0.5/po/zh_TW.po --- rabbitvcs-0.13.1/po/zh_TW.po 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/po/zh_TW.po 2010-12-10 00:00:08.000000000 +0000 @@ -0,0 +1,1988 @@ +# Chinese (Traditional) translation for rabbitvcs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the rabbitvcs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: rabbitvcs\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2010-11-26 09:51-0500\n" +"PO-Revision-Date: 2010-06-09 03:20+0000\n" +"Last-Translator: Yu - Sian , Liu \n" +"Language-Team: Chinese (Traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2010-12-09 23:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: util/helper.py:109 +msgid "just now" +msgstr "" + +#: util/helper.py:111 +#, python-format +msgid "%d minute(s) ago" +msgstr "" + +#: util/helper.py:631 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:634 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i 分鐘" + +#: util/helper.py:637 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i 小時" + +#: util/helper.py:640 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:643 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:646 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" + +#: util/helper.py:649 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" + +#: util/contextmenuitems.py:270 +msgid "Debug" +msgstr "偵錯" + +#: util/contextmenuitems.py:275 +msgid "Bugs" +msgstr "問題回報" + +#: util/contextmenuitems.py:280 +msgid "Open Shell" +msgstr "" + +#: util/contextmenuitems.py:286 +msgid "Refresh Status" +msgstr "" + +#: util/contextmenuitems.py:291 +msgid "Debug Revert" +msgstr "" + +#: util/contextmenuitems.py:292 +msgid "Reverts everything it sees" +msgstr "" + +#: util/contextmenuitems.py:298 +msgid "Invalidate" +msgstr "" + +#: util/contextmenuitems.py:299 +msgid "Force an invalidate_extension_info() call" +msgstr "" + +#: util/contextmenuitems.py:305 +msgid "Add Emblem" +msgstr "" + +#: util/contextmenuitems.py:306 +msgid "Add an emblem" +msgstr "" + +#: util/contextmenuitems.py:312 +msgid "Checkout..." +msgstr "" + +#: util/contextmenuitems.py:313 +msgid "Check out a working copy" +msgstr "" + +#: util/contextmenuitems.py:318 ui/update.py:53 ui/update.py:97 +#: ui/glade/update.glade.h:6 +msgid "Update" +msgstr "更新" + +#: util/contextmenuitems.py:319 +msgid "Update a working copy" +msgstr "" + +#: util/contextmenuitems.py:324 ui/commit.py:288 ui/commit.py:384 +#: ui/glade/commit.glade.h:4 +msgid "Commit" +msgstr "提交" + +#: util/contextmenuitems.py:325 +msgid "Commit modifications to the repository" +msgstr "" + +#: util/contextmenuitems.py:330 ui/glade/property_page.glade.h:4 +msgid "RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:335 +msgid "RabbitVCS SVN" +msgstr "" + +#: util/contextmenuitems.py:340 +msgid "RabbitVCS Git" +msgstr "" + +#: util/contextmenuitems.py:345 ui/glade/browser.glade.h:2 +msgid "Repository Browser" +msgstr "" + +#: util/contextmenuitems.py:346 +msgid "Browse a repository tree" +msgstr "" + +#: util/contextmenuitems.py:351 +msgid "Check for Modifications..." +msgstr "" + +#: util/contextmenuitems.py:352 +msgid "Check for modifications made to the repository" +msgstr "" + +#: util/contextmenuitems.py:357 +msgid "Diff Menu..." +msgstr "" + +#: util/contextmenuitems.py:358 +msgid "List of comparison options" +msgstr "" + +#: util/contextmenuitems.py:363 +msgid "View diff against base" +msgstr "" + +#: util/contextmenuitems.py:364 +msgid "View the modifications made to a file" +msgstr "" + +#: util/contextmenuitems.py:369 +msgid "View diff between files/folders" +msgstr "" + +#: util/contextmenuitems.py:370 +msgid "View the differences between two files" +msgstr "" + +#: util/contextmenuitems.py:375 ui/log.py:786 +msgid "View diff against previous revision" +msgstr "" + +#: util/contextmenuitems.py:376 +msgid "View the modifications made to a file since its last change" +msgstr "" + +#: util/contextmenuitems.py:381 +msgid "Compare with base" +msgstr "" + +#: util/contextmenuitems.py:382 +msgid "Compare with base using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:387 +msgid "Compare files/folders" +msgstr "" + +#: util/contextmenuitems.py:388 +msgid "Compare the differences between two items" +msgstr "" + +#: util/contextmenuitems.py:393 ui/log.py:801 +msgid "Compare with previous revision" +msgstr "" + +#: util/contextmenuitems.py:394 +msgid "Compare with previous revision using side-by-side comparison tool" +msgstr "" + +#: util/contextmenuitems.py:399 +msgid "Show Changes..." +msgstr "" + +#: util/contextmenuitems.py:400 +msgid "Show changes between paths and revisions" +msgstr "" + +#: util/contextmenuitems.py:405 +msgid "Show Log" +msgstr "顯示日誌" + +#: util/contextmenuitems.py:406 +msgid "Show a file's log information" +msgstr "" + +#: util/contextmenuitems.py:411 ui/add.py:156 ui/tags.py:273 +#: ui/branches.py:274 ui/widget.py:1199 ui/glade/add.glade.h:1 +msgid "Add" +msgstr "加入" + +#: util/contextmenuitems.py:412 +msgid "Schedule items to be added to the repository" +msgstr "" + +#: util/contextmenuitems.py:417 +msgid "Add to ignore list" +msgstr "" + +#: util/contextmenuitems.py:422 +msgid "Update to revision..." +msgstr "" + +#: util/contextmenuitems.py:423 +msgid "Update a file to a specific revision" +msgstr "" + +#: util/contextmenuitems.py:428 +msgid "Rename..." +msgstr "重新命名..." + +#: util/contextmenuitems.py:429 +msgid "Schedule an item to be renamed on the repository" +msgstr "" + +#: util/contextmenuitems.py:434 ui/glade/properties.glade.h:3 +msgid "Delete" +msgstr "刪除" + +#: util/contextmenuitems.py:435 +msgid "Schedule an item to be deleted from the repository" +msgstr "" + +#: util/contextmenuitems.py:440 ui/revert.py:50 ui/revert.py:103 +#: ui/revert.py:115 ui/revert.py:168 +msgid "Revert" +msgstr "還原" + +#: util/contextmenuitems.py:441 +msgid "Revert an item to its unmodified state" +msgstr "" + +#: util/contextmenuitems.py:446 ui/resolve.py:48 ui/resolve.py:102 +msgid "Resolve" +msgstr "解決" + +#: util/contextmenuitems.py:447 +msgid "Mark a conflicted item as resolved" +msgstr "" + +#: util/contextmenuitems.py:452 +msgid "Restore" +msgstr "還原" + +#: util/contextmenuitems.py:453 +msgid "Restore a missing item" +msgstr "" + +#: util/contextmenuitems.py:457 +msgid "Relocate..." +msgstr "" + +#: util/contextmenuitems.py:458 +msgid "Relocate your working copy" +msgstr "" + +#: util/contextmenuitems.py:463 +msgid "Get Lock..." +msgstr "" + +#: util/contextmenuitems.py:464 +msgid "Locally lock items" +msgstr "" + +#: util/contextmenuitems.py:469 +msgid "Release Lock..." +msgstr "" + +#: util/contextmenuitems.py:470 +msgid "Release lock on an item" +msgstr "" + +#: util/contextmenuitems.py:475 ui/cleanup.py:55 +msgid "Cleanup" +msgstr "清除" + +#: util/contextmenuitems.py:476 +msgid "Clean up working copy" +msgstr "" + +#: util/contextmenuitems.py:481 +msgid "Export..." +msgstr "" + +#: util/contextmenuitems.py:482 +msgid "Export a working copy or repository with no versioning information" +msgstr "" + +#: util/contextmenuitems.py:487 +msgid "Create Repository here" +msgstr "" + +#: util/contextmenuitems.py:488 +msgid "Create a repository in a folder" +msgstr "" + +#: util/contextmenuitems.py:493 ui/import.py:80 ui/glade/import.glade.h:3 +msgid "Import" +msgstr "匯入" + +#: util/contextmenuitems.py:494 +msgid "Import an item into a repository" +msgstr "" + +#: util/contextmenuitems.py:503 +msgid "Branch/tag..." +msgstr "" + +#: util/contextmenuitems.py:504 +msgid "Copy an item to another location in the repository" +msgstr "" + +#: util/contextmenuitems.py:509 +msgid "Switch..." +msgstr "" + +#: util/contextmenuitems.py:510 +msgid "Change the repository location of a working copy" +msgstr "" + +#: util/contextmenuitems.py:515 +msgid "Merge..." +msgstr "" + +#: util/contextmenuitems.py:516 +msgid "A wizard with steps for merging" +msgstr "" + +#: util/contextmenuitems.py:521 +msgid "Annotate..." +msgstr "" + +#: util/contextmenuitems.py:522 +msgid "Annotate a file" +msgstr "" + +#: util/contextmenuitems.py:527 +msgid "Create Patch..." +msgstr "" + +#: util/contextmenuitems.py:528 +msgid "Creates a unified diff file with all changes you made" +msgstr "" + +#: util/contextmenuitems.py:533 +msgid "Apply Patch..." +msgstr "" + +#: util/contextmenuitems.py:534 +msgid "Applies a unified diff file to the working copy" +msgstr "" + +#: util/contextmenuitems.py:539 ui/glade/properties.glade.h:7 +msgid "Properties" +msgstr "屬性" + +#: util/contextmenuitems.py:540 +msgid "View the properties of an item" +msgstr "" + +#: util/contextmenuitems.py:545 +msgid "Help" +msgstr "" + +#: util/contextmenuitems.py:546 +msgid "View help" +msgstr "" + +#: util/contextmenuitems.py:551 ui/glade/settings.glade.h:28 +msgid "Settings" +msgstr "設定" + +#: util/contextmenuitems.py:552 +msgid "View or change RabbitVCS settings" +msgstr "" + +#: util/contextmenuitems.py:557 ui/glade/about.glade.h:4 +msgid "About" +msgstr "關於" + +#: util/contextmenuitems.py:558 +msgid "About RabbitVCS" +msgstr "" + +#: util/contextmenuitems.py:563 +msgid "Open" +msgstr "" + +#: util/contextmenuitems.py:564 +msgid "Open a file" +msgstr "" + +#: util/contextmenuitems.py:572 +msgid "Browse to" +msgstr "" + +#: util/contextmenuitems.py:573 +msgid "Browse to a file or folder" +msgstr "" + +#: util/contextmenuitems.py:578 +msgid "Revert property" +msgstr "" + +#: util/contextmenuitems.py:580 +msgid "Revert this property to its original state" +msgstr "" + +#: util/contextmenuitems.py:584 +msgid "Revert property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:586 +msgid "Revert this property to its original state (recursive)" +msgstr "" + +#: util/contextmenuitems.py:591 +msgid "Delete property" +msgstr "" + +#: util/contextmenuitems.py:593 +msgid "Delete this property" +msgstr "" + +#: util/contextmenuitems.py:597 +msgid "Delete property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:599 +msgid "Delete this property (recursive)" +msgstr "" + +#: util/contextmenuitems.py:604 +msgid "Edit details" +msgstr "" + +#: util/contextmenuitems.py:606 +msgid "Show and edit property details" +msgstr "" + +#: util/contextmenuitems.py:610 +msgid "Initialize Repository" +msgstr "" + +#: util/contextmenuitems.py:615 ui/clone.py:47 ui/clone.py:65 +msgid "Clone" +msgstr "" + +#: util/contextmenuitems.py:620 +msgid "Fetch/Pull" +msgstr "" + +#: util/contextmenuitems.py:625 ui/push.py:96 +msgid "Push" +msgstr "" + +#: util/contextmenuitems.py:630 +msgid "Branches" +msgstr "" + +#: util/contextmenuitems.py:635 +msgid "Tags" +msgstr "" + +#: util/contextmenuitems.py:640 +msgid "Remotes" +msgstr "" + +#: util/contextmenuitems.py:666 +msgid "Ignore item by filename" +msgstr "" + +#: util/contextmenuitems.py:685 +msgid "Ignore item by file extension" +msgstr "" + +#: ui/update.py:54 ui/update.py:98 ui/updateto.py:94 +msgid "Updating..." +msgstr "更新中..." + +#: ui/update.py:56 ui/update.py:103 ui/updateto.py:102 +msgid "Completed Update" +msgstr "" + +#: ui/updateto.py:82 +msgid "Rollback To Revision" +msgstr "" + +#: ui/updateto.py:83 +msgid "Rolling Back..." +msgstr "" + +#: ui/updateto.py:91 +msgid "Completed Rollback" +msgstr "" + +#: ui/updateto.py:93 +msgid "Update To Revision" +msgstr "" + +#: ui/updateto.py:138 ui/checkout.py:173 +msgid "Checkout" +msgstr "取出" + +#: ui/updateto.py:139 +#, python-format +msgid "Checking out %s..." +msgstr "" + +#: ui/updateto.py:145 ui/checkout.py:184 +msgid "Completed Checkout" +msgstr "" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/changes.py:279 +#: ui/changes.py:364 ui/log.py:337 ui/log.py:572 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/action.py:118 +#: ui/unlock.py:61 ui/browser.py:89 +msgid "Path" +msgstr "路徑" + +#: ui/add.py:72 ui/commit.py:205 ui/commit.py:313 ui/revert.py:62 +#: ui/revert.py:128 ui/checkmods.py:67 ui/resolve.py:61 ui/lock.py:72 +#: ui/createpatch.py:119 ui/createpatch.py:215 ui/unlock.py:61 +msgid "Extension" +msgstr "" + +#: ui/add.py:95 ui/commit.py:93 ui/lock.py:115 ui/unlock.py:85 +#: ui/glade/dialogs.glade.h:33 +msgid "Loading..." +msgstr "載入中..." + +#: ui/add.py:98 ui/commit.py:100 ui/lock.py:118 ui/unlock.py:107 +#, python-format +msgid "Found %d item(s)" +msgstr "找到 %d 個項目" + +#: ui/add.py:157 +msgid "Running Add Command..." +msgstr "執行加入..." + +#: ui/add.py:159 +msgid "Completed Add" +msgstr "完整加入" + +#: ui/ignore.py:100 +msgid "Ignore file:" +msgstr "" + +#: ui/tags.py:62 +msgid "Tag Manager" +msgstr "" + +#: ui/tags.py:63 +msgid "Tags" +msgstr "" + +#: ui/tags.py:74 +msgid "Tag" +msgstr "" + +#: ui/tags.py:99 ui/branches.py:100 ui/glade/dialogs.glade.h:38 +#: ui/glade/property_page.glade.h:2 +msgid "Name:" +msgstr "" + +#: ui/tags.py:109 ui/tags.py:176 ui/branches.py:155 ui/merge.py:438 +#: ui/merge.py:488 ui/glade/browser.glade.h:3 +msgid "Revision:" +msgstr "修訂版:" + +#: ui/tags.py:128 ui/tags.py:188 ui/branches.py:167 ui/merge.py:450 +#: ui/merge.py:500 +msgid "Message:" +msgstr "" + +#: ui/tags.py:145 ui/tags.py:284 ui/branches.py:147 ui/branches.py:291 +msgid "Save" +msgstr "" + +#: ui/tags.py:153 +msgid "Tagger:" +msgstr "" + +#: ui/tags.py:165 ui/merge.py:427 ui/merge.py:477 +msgid "Date:" +msgstr "" + +#: ui/tags.py:230 ui/branches.py:209 ui/remotes.py:128 +#, python-format +msgid "Are you sure you want to delete %s?" +msgstr "" + +#: ui/tags.py:275 +msgid "Add Tag" +msgstr "" + +#: ui/tags.py:293 +msgid "Tag Detail" +msgstr "" + +#: ui/export.py:45 ui/export.py:114 +#, python-format +msgid "Export - %s" +msgstr "" + +#: ui/export.py:72 ui/export.py:131 ui/clone.py:57 ui/checkout.py:163 +msgid "The repository URL and destination path are both required fields." +msgstr "" + +#: ui/export.py:92 ui/export.py:151 +msgid "Export" +msgstr "匯出" + +#: ui/export.py:93 ui/export.py:152 +msgid "Running Export Command..." +msgstr "" + +#: ui/export.py:104 ui/export.py:160 +msgid "Completed Export" +msgstr "" + +#: ui/applypatch.py:57 ui/applypatch.py:113 ui/applypatch.py:143 +msgid "Apply Patch" +msgstr "" + +#: ui/applypatch.py:74 +msgid "Apply Patch To Directory..." +msgstr "" + +#: ui/applypatch.py:114 ui/applypatch.py:144 +msgid "Applying Patch File..." +msgstr "" + +#: ui/applypatch.py:116 ui/applypatch.py:146 +msgid "Patch File Applied" +msgstr "" + +#: ui/branches.py:62 +msgid "Branch Manager" +msgstr "" + +#: ui/branches.py:63 +msgid "Branches" +msgstr "" + +#: ui/branches.py:73 ui/widget.py:855 +msgid "Branch" +msgstr "" + +#: ui/branches.py:110 +msgid "Start Point:" +msgstr "" + +#: ui/branches.py:129 +msgid "Keep old branch's history" +msgstr "" + +#: ui/branches.py:138 +msgid "Set as active branch" +msgstr "" + +#: ui/branches.py:280 +msgid "Add Branch" +msgstr "" + +#: ui/branches.py:304 +msgid "Branch Detail" +msgstr "" + +#: ui/push.py:76 ui/dialog.py:54 ui/annotate.py:128 ui/annotate.py:229 +#: ui/log.py:327 ui/log.py:557 ui/browser.py:89 +msgid "Date" +msgstr "日期" + +#: ui/push.py:76 ui/dialog.py:54 ui/log.py:327 ui/log.py:557 +#: ui/glade/dialogs.glade.h:36 +msgid "Message" +msgstr "訊息" + +#: ui/push.py:97 +msgid "Running Push Command..." +msgstr "" + +#: ui/push.py:99 +msgid "Completed Push" +msgstr "" + +#: ui/import.py:40 +#, python-format +msgid "Import - %s" +msgstr "匯入 - %s" + +#: ui/import.py:68 +msgid "The repository URL field is required." +msgstr "" + +#: ui/import.py:81 +msgid "Running Import Command..." +msgstr "" + +#: ui/import.py:89 +msgid "Completed Import" +msgstr "" + +#: ui/rename.py:48 +msgid "The requested file or folder does not exist." +msgstr "" + +#: ui/rename.py:52 ui/rename.py:84 ui/rename.py:113 ui/browser.py:470 +msgid "Rename" +msgstr "重新命名" + +#: ui/rename.py:52 ui/browser.py:470 ui/glade/dialogs.glade.h:39 +msgid "New Name:" +msgstr "新名稱:" + +#: ui/rename.py:60 +msgid "The new name field is required" +msgstr "" + +#: ui/rename.py:85 ui/rename.py:114 +msgid "Running Rename Command..." +msgstr "" + +#: ui/rename.py:91 ui/rename.py:120 +msgid "Completed Rename" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Text Status" +msgstr "" + +#: ui/commit.py:206 ui/revert.py:63 ui/checkmods.py:68 ui/resolve.py:62 +#: ui/createpatch.py:120 +msgid "Property Status" +msgstr "" + +#: ui/commit.py:289 ui/commit.py:385 +msgid "Running Commit Command..." +msgstr "" + +#: ui/commit.py:295 ui/commit.py:394 +msgid "Completed Commit" +msgstr "完成提交" + +#: ui/commit.py:314 ui/revert.py:129 ui/createpatch.py:216 +#: ui/property_editor.py:112 +msgid "Status" +msgstr "狀態" + +#: ui/diff.py:284 +msgid "View diff as side-by-side comparison" +msgstr "" + +#: ui/merge.py:87 +msgid "Running Merge Test" +msgstr "" + +#: ui/merge.py:88 +msgid "Completed Merge Test" +msgstr "" + +#: ui/merge.py:90 +msgid "Running Merge Command" +msgstr "" + +#: ui/merge.py:91 +msgid "Completed Merge" +msgstr "" + +#: ui/merge.py:102 +msgid "Merge" +msgstr "合併" + +#: ui/merge.py:415 ui/merge.py:465 +msgid "Author:" +msgstr "" + +#: ui/dialog.py:38 +#, python-format +msgid "" +"An error has occurred in the RabbitVCS Nautilus extension. Please contact " +"the RabbitVCS team with the error details listed below:" +msgstr "" + +#: ui/dialog.py:108 +msgid "Select a Folder" +msgstr "選擇一個資料夾" + +#: ui/dialog.py:138 ui/glade/log.glade.h:11 +msgid "to" +msgstr "到" + +#: ui/dialog.py:261 +msgid "Select a File" +msgstr "選取檔案" + +#: ui/dialog.py:280 +msgid "Save As..." +msgstr "另存為..." + +#: ui/dialog.py:299 ui/glade/dialogs.glade.h:19 +msgid "Are you sure you want to continue?" +msgstr "" + +#: ui/dialog.py:327 +msgid "the selected item(s)" +msgstr "" + +#: ui/dialog.py:398 +msgid "Added a folder to the repository" +msgstr "" + +#: ui/revert.py:104 ui/revert.py:169 +msgid "Running Revert Command..." +msgstr "" + +#: ui/revert.py:106 ui/revert.py:171 +msgid "Completed Revert" +msgstr "" + +#: ui/clone.py:66 +msgid "Running Clone Command..." +msgstr "" + +#: ui/clone.py:73 +msgid "Completed Clone" +msgstr "" + +#: ui/relocate.py:77 +msgid "The from and to url fields are both required." +msgstr "" + +#: ui/relocate.py:87 ui/glade/relocate.glade.h:3 +msgid "Relocate" +msgstr "" + +#: ui/relocate.py:88 +msgid "Running Relocate Command..." +msgstr "" + +#: ui/relocate.py:95 +msgid "Completed Relocate" +msgstr "" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:48 +#: ui/log.py:326 ui/log.py:556 ui/widget.py:854 ui/browser.py:89 +#: ui/glade/merge.glade.h:17 +msgid "Revision" +msgstr "修訂版本" + +#: ui/checkmods.py:69 ui/annotate.py:127 ui/annotate.py:228 ui/log.py:326 +#: ui/log.py:556 ui/browser.py:89 +msgid "Author" +msgstr "作者" + +#: ui/checkmods.py:160 ui/changes.py:50 ui/changes.py:420 +msgid "View unified diff" +msgstr "" + +#: ui/checkmods.py:165 ui/changes.py:425 +msgid "Compare side by side" +msgstr "" + +#: ui/resolve.py:103 +msgid "Running Resolve Command..." +msgstr "" + +#: ui/resolve.py:106 +msgid "Completed Resolve" +msgstr "" + +#: ui/changes.py:49 +msgid "More Actions..." +msgstr "" + +#: ui/changes.py:279 ui/changes.py:364 +msgid "Change" +msgstr "更改" + +#: ui/changes.py:279 +msgid "Property Change" +msgstr "屬性改變" + +#: ui/changes.py:321 ui/lock.py:126 +msgid "Yes" +msgstr "是" + +#: ui/changes.py:321 +msgid "No" +msgstr "否" + +#: ui/changes.py:410 +msgid "Open from first revision" +msgstr "" + +#: ui/changes.py:415 +msgid "Open from second revision" +msgstr "" + +#: ui/annotate.py:57 +msgid "Cannot annotate a directory" +msgstr "" + +#: ui/annotate.py:63 +#, python-format +msgid "Annotate - %s" +msgstr "" + +#: ui/annotate.py:127 ui/annotate.py:228 +msgid "Line" +msgstr "" + +#: ui/annotate.py:128 ui/annotate.py:229 +msgid "Text" +msgstr "文字" + +#: ui/annotate.py:143 +msgid "The from revision field must be an integer" +msgstr "" + +#: ui/log.py:120 +#, python-format +msgid "Log - %s" +msgstr "紀錄 - %s" + +#: ui/log.py:270 ui/log.py:271 ui/glade/log.glade.h:7 +msgid "N/A" +msgstr "無" + +#: ui/log.py:337 ui/log.py:572 ui/action.py:118 +msgid "Action" +msgstr "動作" + +#: ui/log.py:338 +msgid "Copy From Path" +msgstr "從路徑複製" + +#: ui/log.py:338 +msgid "Copy From Revision" +msgstr "從修訂版本中複製" + +#: ui/log.py:556 +msgid "Graph" +msgstr "" + +#: ui/log.py:781 +msgid "View diff against working copy" +msgstr "" + +#: ui/log.py:791 +msgid "View diff between revisions" +msgstr "" + +#: ui/log.py:796 +msgid "Compare with working copy" +msgstr "" + +#: ui/log.py:806 +msgid "Compare revisions" +msgstr "比較修訂版間差異" + +#: ui/log.py:812 +msgid "Show changes against previous revision" +msgstr "" + +#: ui/log.py:818 +msgid "Show changes between revisions" +msgstr "" + +#: ui/log.py:823 +msgid "Update to this revision" +msgstr "" + +#: ui/log.py:824 +msgid "Update the selected path to this revision" +msgstr "" + +#: ui/log.py:829 ui/log.py:833 +msgid "Edit author..." +msgstr "" + +#: ui/log.py:837 +msgid "Edit log message..." +msgstr "" + +#: ui/log.py:841 +msgid "Edit revision properties..." +msgstr "" + +#: ui/log.py:1047 +msgid "Edit author" +msgstr "" + +#: ui/log.py:1059 +msgid "Edit log message" +msgstr "" + +#: ui/settings.py:43 ui/glade/settings.glade.h:35 +msgid "Unknown" +msgstr "不明" + +#: ui/settings.py:45 +msgid "There was an error communicating with the status checker service." +msgstr "" + +#: ui/settings.py:59 +msgid "English" +msgstr "英文" + +#: ui/settings.py:119 +msgid "Config file:" +msgstr "" + +#: ui/settings.py:294 +msgid "Select a program" +msgstr "" + +#: ui/settings.py:303 +msgid "Are you sure you want to clear your repository paths?" +msgstr "" + +#: ui/settings.py:310 +msgid "Repository paths cleared" +msgstr "" + +#: ui/settings.py:314 +msgid "Are you sure you want to clear your previous messages?" +msgstr "" + +#: ui/settings.py:321 +msgid "Previous messages cleared" +msgstr "" + +#: ui/settings.py:325 +msgid "Are you sure you want to clear your authentication information?" +msgstr "" + +#: ui/settings.py:342 +msgid "Authentication information cleared" +msgstr "" + +#: ui/revprops.py:65 ui/properties.py:158 ui/property_editor.py:155 +msgid "Unable to retrieve properties list" +msgstr "" + +#: ui/branch.py:99 +msgid "You must supply a destination path." +msgstr "" + +#: ui/branch.py:115 +msgid "Branch/tag" +msgstr "" + +#: ui/branch.py:116 +msgid "Running Branch/tag Command..." +msgstr "" + +#: ui/branch.py:118 +msgid "Completed Branch/tag" +msgstr "" + +#: ui/lock.py:73 +msgid "Locked" +msgstr "已鎖定" + +#: ui/lock.py:167 +msgid "Get Lock" +msgstr "取得鎖定" + +#: ui/lock.py:168 +msgid "Running Lock Command..." +msgstr "執行上鎖命令" + +#: ui/lock.py:177 +msgid "Completed Lock" +msgstr "完成上鎖" + +#: ui/switch.py:70 +msgid "The repository location is a required field." +msgstr "" + +#: ui/switch.py:80 +msgid "Switch" +msgstr "轉換" + +#: ui/switch.py:81 +msgid "Running Switch Command..." +msgstr "" + +#: ui/switch.py:89 +msgid "Completed Switch" +msgstr "" + +#: ui/widget.py:853 ui/widget.py:859 ui/glade/merge.glade.h:10 +msgid "HEAD" +msgstr "" + +#: ui/widget.py:860 +msgid "Number" +msgstr "數字" + +#: ui/widget.py:861 +msgid "Working Copy" +msgstr "" + +#: ui/widget.py:1056 +msgid "Repository:" +msgstr "" + +#: ui/widget.py:1075 +msgid "Branch:" +msgstr "" + +#: ui/widget.py:1093 ui/glade/dialogs.glade.h:30 +msgid "Host:" +msgstr "主機:" + +#: ui/widget.py:1194 +msgid "Add line:" +msgstr "" + +#: ui/checkout.py:139 ui/checkout.py:213 +#, python-format +msgid "Checkout - %s" +msgstr "" + +#: ui/checkout.py:174 +msgid "Running Checkout Command..." +msgstr "" + +#: ui/remotes.py:59 +msgid "Remote Repository Manager" +msgstr "" + +#: ui/remotes.py:60 +msgid "Remote Repositories" +msgstr "" + +#: ui/remotes.py:66 ui/properties.py:63 ui/property_editor.py:112 +msgid "Name" +msgstr "名稱" + +#: ui/remotes.py:66 +msgid "Host" +msgstr "" + +#: ui/property_page.py:126 +msgid "Repository URL" +msgstr "" + +#: ui/createpatch.py:68 ui/createpatch.py:86 ui/createpatch.py:162 +#: ui/createpatch.py:262 +msgid "Create Patch" +msgstr "" + +#: ui/createpatch.py:112 ui/createpatch.py:208 +msgid "The given path is not a working copy" +msgstr "" + +#: ui/createpatch.py:163 ui/createpatch.py:263 +msgid "Creating Patch File..." +msgstr "" + +#: ui/createpatch.py:193 ui/createpatch.py:292 +msgid "Patch File Created" +msgstr "" + +#: ui/properties.py:55 +#, python-format +msgid "Properties - %s" +msgstr "屬性 - %s" + +#: ui/properties.py:63 ui/property_editor.py:112 +msgid "Value" +msgstr "值" + +#: ui/properties.py:179 +msgid "There was a problem saving your properties." +msgstr "" + +#: ui/property_editor.py:56 +msgid "" +"Note: changes to properties are applied instantly. You may review and " +"undo changes using the context menu for each item.\n" +msgstr "" + +#: ui/property_editor.py:61 +msgid "" +"Do you want to delete the selected properties from all files and " +"subdirectories\n" +"beneath this directory?" +msgstr "" + +#: ui/property_editor.py:102 +msgid "File is not under version control." +msgstr "" + +#: ui/property_editor.py:112 +msgid "Reserved" +msgstr "保留" + +#: ui/property_editor.py:189 +msgid "Unable to set new value for property." +msgstr "" + +#: ui/__init__.py:50 +msgid "" +"You must specify a version control system using the --vcs [svn|git] option" +msgstr "" + +#: ui/action.py:118 +msgid "Mime Type" +msgstr "MIME 類型" + +#: ui/action.py:338 +msgid "Finished" +msgstr "已完成" + +#: ui/action.py:342 +#, python-format +msgid "%s - Finished" +msgstr "%s - 已完成" + +#: ui/action.py:365 +msgid "Log Message" +msgstr "紀錄訊息" + +#: ui/unlock.py:48 ui/unlock.py:125 +msgid "Unlock" +msgstr "解除鎖定" + +#: ui/unlock.py:126 +msgid "Running Unlock Command..." +msgstr "" + +#: ui/unlock.py:129 +msgid "Completed Unlock" +msgstr "" + +#: ui/browser.py:89 +msgid "Size" +msgstr "大小" + +#: ui/browser.py:326 +msgid "Select" +msgstr "" + +#: ui/browser.py:348 +msgid "Create folder..." +msgstr "新增資料夾" + +#: ui/browser.py:353 +msgid "Copy to..." +msgstr "複製到..." + +#: ui/browser.py:358 +msgid "Copy URL to clipboard" +msgstr "複製網址到剪貼簿" + +#: ui/browser.py:363 +msgid "Move to..." +msgstr "移動到..." + +#: ui/browser.py:531 +msgid "Where do you want to copy the selection?" +msgstr "" + +#: ui/browser.py:532 ui/browser.py:561 +msgid "New Location:" +msgstr "" + +#: ui/browser.py:560 +msgid "Where do you want to move the selection?" +msgstr "" + +#: ui/cleanup.py:56 ui/glade/cleanup.glade.h:1 +msgid "Cleaning Up..." +msgstr "" + +#: ui/cleanup.py:58 +msgid "Completed Cleanup" +msgstr "" + +#: ui/create.py:46 +msgid "Repository successfully created" +msgstr "" + +#: ui/create.py:48 +msgid "" +"There was an error creating the repository. Make sure the given folder is " +"empty." +msgstr "" + +#: ui/glade/properties.glade.h:1 +msgid "Properties for:" +msgstr "" + +#: ui/glade/properties.glade.h:2 +msgid "Selected properties will be applied recursively." +msgstr "" + +#: ui/glade/properties.glade.h:4 +msgid "Delete properties recursively" +msgstr "" + +#: ui/glade/properties.glade.h:5 +msgid "Edit..." +msgstr "編輯..." + +#: ui/glade/properties.glade.h:6 +msgid "New..." +msgstr "新增..." + +#: ui/glade/properties.glade.h:8 +msgid "URL/Path:" +msgstr "" + +#: ui/glade/browser.glade.h:1 +msgid "Load/Refresh" +msgstr "" + +#: ui/glade/browser.glade.h:4 +msgid "URL:" +msgstr "URL:" + +#: ui/glade/dialogs.glade.h:1 +msgid "A conflict was found in the following file:" +msgstr "" + +#: ui/glade/dialogs.glade.h:2 ui/glade/commit.glade.h:1 +msgid "Add Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:3 +msgid "Certificate Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:4 +msgid "Edit Property Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:5 +msgid "Enter Name and Email Details" +msgstr "" + +#: ui/glade/dialogs.glade.h:6 +msgid "Folder Name" +msgstr "" + +#: ui/glade/dialogs.glade.h:7 ui/glade/log.glade.h:3 +msgid "Message" +msgstr "" + +#: ui/glade/dialogs.glade.h:8 +msgid "Please add your authentication details" +msgstr "" + +#: ui/glade/dialogs.glade.h:9 +msgid "Please provide your ssl certification file" +msgstr "" + +#: ui/glade/dialogs.glade.h:10 +msgid "Previous Messages" +msgstr "" + +#: ui/glade/dialogs.glade.h:12 +msgid "" +"Are you sure you want to delete %item%?" +msgstr "" + +#: ui/glade/dialogs.glade.h:13 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:14 +msgid "Accept Forever" +msgstr "" + +#: ui/glade/dialogs.glade.h:15 +msgid "Accept Mine" +msgstr "" + +#: ui/glade/dialogs.glade.h:16 +msgid "Accept Once" +msgstr "" + +#: ui/glade/dialogs.glade.h:17 +msgid "Accept Theirs" +msgstr "" + +#: ui/glade/dialogs.glade.h:18 +msgid "Apply property recursively" +msgstr "" + +#: ui/glade/dialogs.glade.h:20 +msgid "Authentication" +msgstr "驗證" + +#: ui/glade/dialogs.glade.h:21 +msgid "Cancel" +msgstr "" + +#: ui/glade/dialogs.glade.h:22 +msgid "Check Certificate" +msgstr "" + +#: ui/glade/dialogs.glade.h:23 +msgid "Confirmation" +msgstr "確認" + +#: ui/glade/dialogs.glade.h:24 +msgid "Conflict Resolution Decision" +msgstr "" + +#: ui/glade/dialogs.glade.h:25 +msgid "Create Folder..." +msgstr "建立資料夾..." + +#: ui/glade/dialogs.glade.h:26 +msgid "Delete Confirmation" +msgstr "確認刪除" + +#: ui/glade/dialogs.glade.h:27 +msgid "Deny" +msgstr "取消" + +#: ui/glade/dialogs.glade.h:28 +msgid "Email:" +msgstr "" + +#: ui/glade/dialogs.glade.h:29 +msgid "Fingerprint:" +msgstr "指紋:" + +#: ui/glade/dialogs.glade.h:31 +msgid "How do you want to handle this?" +msgstr "" + +#: ui/glade/dialogs.glade.h:32 +msgid "Issuer:" +msgstr "" + +#: ui/glade/dialogs.glade.h:34 +msgid "Login:" +msgstr "帳號:" + +#: ui/glade/dialogs.glade.h:35 +msgid "Merge Manually" +msgstr "" + +#: ui/glade/dialogs.glade.h:37 +msgid "Name and Email" +msgstr "" + +#: ui/glade/dialogs.glade.h:40 +msgid "Password:" +msgstr "密碼:" + +#: ui/glade/dialogs.glade.h:41 +msgid "Path:" +msgstr "路徑:" + +#: ui/glade/dialogs.glade.h:42 ui/glade/lock.glade.h:4 +#: ui/glade/commit.glade.h:5 ui/glade/import.glade.h:5 +msgid "Previous Messages" +msgstr "之前的訊息" + +#: ui/glade/dialogs.glade.h:43 +msgid "Property" +msgstr "屬性" + +#: ui/glade/dialogs.glade.h:44 +msgid "Property:" +msgstr "属性:" + +#: ui/glade/dialogs.glade.h:45 +msgid "RabbitVCS Error" +msgstr "" + +#: ui/glade/dialogs.glade.h:46 +msgid "Realm:" +msgstr "領域:" + +#: ui/glade/dialogs.glade.h:47 +msgid "SSL Client Certification" +msgstr "" + +#: ui/glade/dialogs.glade.h:48 +msgid "Save Authentication" +msgstr "" + +#: ui/glade/dialogs.glade.h:49 +msgid "Text Change" +msgstr "" + +#: ui/glade/dialogs.glade.h:50 +msgid "The item(s) will be sent to the trash can." +msgstr "" + +#: ui/glade/dialogs.glade.h:51 +msgid "Valid:" +msgstr "" + +#: ui/glade/dialogs.glade.h:52 +msgid "Value:" +msgstr "數值:" + +#: ui/glade/pull.glade.h:1 +msgid "Pull Information" +msgstr "" + +#: ui/glade/pull.glade.h:2 ui/glade/git-update.glade.h:2 +msgid "Merge changes into local branch" +msgstr "" + +#: ui/glade/pull.glade.h:3 +msgid "Pull" +msgstr "" + +#: ui/glade/manager.glade.h:1 +msgid "label" +msgstr "" + +#: ui/glade/about.glade.h:1 +msgid "Links" +msgstr "" + +#: ui/glade/about.glade.h:2 +msgid "Version Information" +msgstr "" + +#: ui/glade/about.glade.h:3 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/about.glade.h:5 +msgid "Authors:" +msgstr "作者:" + +#: ui/glade/about.glade.h:6 +msgid "Thanks:" +msgstr "鳴謝:" + +#: ui/glade/property_page.glade.h:1 +msgid "Content status:" +msgstr "" + +#: ui/glade/property_page.glade.h:3 +msgid "Property status:" +msgstr "" + +#: ui/glade/property_page.glade.h:5 +msgid "VCS:" +msgstr "" + +#: ui/glade/log.glade.h:1 +msgid "100" +msgstr "100" + +#: ui/glade/log.glade.h:2 +msgid "Affected File(s) (double-click to compare with base)" +msgstr "" + +#: ui/glade/log.glade.h:4 +msgid "Revisions Table" +msgstr "" + +#: ui/glade/log.glade.h:5 +msgid "Limit:" +msgstr "限制:" + +#: ui/glade/log.glade.h:6 +msgid "Log" +msgstr "紀錄" + +#: ui/glade/log.glade.h:8 +msgid "Refresh" +msgstr "重新整理" + +#: ui/glade/log.glade.h:9 +msgid "Showing Revisions:" +msgstr "" + +#: ui/glade/log.glade.h:10 +msgid "Stop on copy" +msgstr "" + +#: ui/glade/cleanup.glade.h:2 +msgid "" +"Cleanup Requested....\n" +"\n" +"Begin working copy cleanup?" +msgstr "" + +#: ui/glade/settings.glade.h:1 +msgid "Authentication" +msgstr "驗證" + +#: ui/glade/settings.glade.h:2 +msgid "Checker type:" +msgstr "" + +#: ui/glade/settings.glade.h:3 +msgid "Configuration Editor" +msgstr "" + +#: ui/glade/settings.glade.h:4 +msgid "Log Messages" +msgstr "日誌訊息" + +#: ui/glade/settings.glade.h:5 +msgid "Logging Options" +msgstr "" + +#: ui/glade/settings.glade.h:6 +msgid "Memory usage: " +msgstr "" + +#: ui/glade/settings.glade.h:7 +msgid "Other Information" +msgstr "" + +#: ui/glade/settings.glade.h:8 +msgid "Process ID:" +msgstr "" + +#: ui/glade/settings.glade.h:9 +msgid "Program used to compare files" +msgstr "" + +#: ui/glade/settings.glade.h:10 +msgid "RabbitVCS" +msgstr "" + +#: ui/glade/settings.glade.h:11 +msgid "URL History" +msgstr "" + +#: ui/glade/settings.glade.h:12 +msgid "Browse..." +msgstr "瀏覽..." + +#: ui/glade/settings.glade.h:13 +msgid "Clear your authentication information" +msgstr "" + +#: ui/glade/settings.glade.h:14 +msgid "Enable emblems" +msgstr "" + +#: ui/glade/settings.glade.h:15 +msgid "Enable file attributes" +msgstr "" + +#: ui/glade/settings.glade.h:16 +msgid "Enable recursive status checks" +msgstr "" + +#: ui/glade/settings.glade.h:17 +msgid "External Programs" +msgstr "外部程式" + +#: ui/glade/settings.glade.h:18 +msgid "General" +msgstr "一般" + +#: ui/glade/settings.glade.h:19 +msgid "Git" +msgstr "" + +#: ui/glade/settings.glade.h:20 +msgid "Language:" +msgstr "語言:" + +#: ui/glade/settings.glade.h:21 +msgid "Logging" +msgstr "紀錄" + +#: ui/glade/settings.glade.h:22 +msgid "Minimum level to log" +msgstr "" + +#: ui/glade/settings.glade.h:23 +msgid "Number of URLs to remember" +msgstr "" + +#: ui/glade/settings.glade.h:24 +msgid "Number of messages to remember" +msgstr "" + +#: ui/glade/settings.glade.h:25 +msgid "Refresh Information" +msgstr "" + +#: ui/glade/settings.glade.h:26 +msgid "Restart Checker" +msgstr "" + +#: ui/glade/settings.glade.h:27 +msgid "Saved Data" +msgstr "" + +#: ui/glade/settings.glade.h:29 +msgid "Show RabbitVCS debugging tools" +msgstr "" + +#: ui/glade/settings.glade.h:30 +msgid "Show new version on the left side" +msgstr "" + +#: ui/glade/settings.glade.h:31 +msgid "Status Checker" +msgstr "" + +#: ui/glade/settings.glade.h:32 +msgid "Stop Checker" +msgstr "" + +#: ui/glade/settings.glade.h:33 +msgid "The debug menu is used to diagnose problems with RabbitVCS itself" +msgstr "" + +#: ui/glade/settings.glade.h:34 +msgid "Type:" +msgstr "類型:" + +#: ui/glade/lock.glade.h:1 +msgid "Files to lock" +msgstr "" + +#: ui/glade/lock.glade.h:2 +msgid "Please describe why you are locking these files" +msgstr "" + +#: ui/glade/lock.glade.h:3 +msgid "Lock Files" +msgstr "" + +#: ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 +msgid "Select / Deselect all" +msgstr "" + +#: ui/glade/lock.glade.h:6 +msgid "Steal the locks" +msgstr "" + +#: ui/glade/annotate.glade.h:1 +msgid "From Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:2 +msgid "To Revision" +msgstr "" + +#: ui/glade/annotate.glade.h:3 +msgid "Annotate" +msgstr "註解" + +#: ui/glade/ignore.glade.h:1 +msgid "Ignore and exclude files from being tracked" +msgstr "" + +#: ui/glade/ignore.glade.h:2 +msgid "Ignore" +msgstr "" + +#: ui/glade/commit.glade.h:2 +msgid "Changed Files (double-click to compare with base)" +msgstr "" + +#: ui/glade/commit.glade.h:3 +msgid "Commit to:" +msgstr "" + +#: ui/glade/commit.glade.h:7 +msgid "Show unversioned files" +msgstr "" + +#: ui/glade/notification.glade.h:1 +msgid "Notification Messages" +msgstr "通知訊息" + +#: ui/glade/property_editor.glade.h:1 +msgid "Remote URI:" +msgstr "" + +#: ui/glade/property_editor.glade.h:2 +msgid "Working Copy:" +msgstr "" + +#: ui/glade/property_editor.glade.h:3 +msgid "Add a new property." +msgstr "" + +#: ui/glade/property_editor.glade.h:4 +msgid "Close this dialog." +msgstr "" + +#: ui/glade/property_editor.glade.h:5 +msgid "Property Editor" +msgstr "屬性編輯器" + +#: ui/glade/property_editor.glade.h:6 +msgid "Refresh the list of properties." +msgstr "" + +#: ui/glade/relocate.glade.h:1 +msgid "Change the repository of your working copy" +msgstr "" + +#: ui/glade/relocate.glade.h:2 +msgid "From:" +msgstr "從:" + +#: ui/glade/relocate.glade.h:4 +msgid "To:" +msgstr "到:" + +#: ui/glade/git-update.glade.h:1 ui/glade/update.glade.h:1 +#: ui/glade/merge.glade.h:3 +msgid "Options" +msgstr "選項" + +#: ui/glade/git-update.glade.h:3 +msgid "Update Local Repository" +msgstr "" + +#: ui/glade/update.glade.h:2 +msgid "Revision" +msgstr "" + +#: ui/glade/update.glade.h:3 +msgid "Omit Externals" +msgstr "" + +#: ui/glade/update.glade.h:4 ui/glade/merge.glade.h:16 +msgid "Recursive" +msgstr "遞迴進入子目錄" + +#: ui/glade/update.glade.h:5 +msgid "Rollback to specified revision number" +msgstr "" + +#: ui/glade/import.glade.h:1 +msgid "Import Message" +msgstr "" + +#: ui/glade/import.glade.h:2 +msgid "Repository" +msgstr "" + +#: ui/glade/import.glade.h:4 +msgid "Include ignored files" +msgstr "" + +#: ui/glade/merge.glade.h:1 +msgid "From URL" +msgstr "從 URL 新增" + +#: ui/glade/merge.glade.h:2 +msgid "From: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:4 +msgid "Revision Range" +msgstr "" + +#: ui/glade/merge.glade.h:5 +msgid "To: (URL and revision to merge)" +msgstr "" + +#: ui/glade/merge.glade.h:6 +msgid "URL to merge from" +msgstr "" + +#: ui/glade/merge.glade.h:7 +msgid "Working Copy" +msgstr "" + +#: ui/glade/merge.glade.h:8 +msgid "" +"Choose this method if you have made some changes to a branch and wish to " +"merge your changes with another branch." +msgstr "" + +#: ui/glade/merge.glade.h:9 +msgid "" +"Choose this method if you wish to merge two different branches into your " +"working copy." +msgstr "" + +#: ui/glade/merge.glade.h:11 +msgid "Ignore ancestry" +msgstr "" + +#: ui/glade/merge.glade.h:12 +msgid "Merge Assistant" +msgstr "" + +#: ui/glade/merge.glade.h:13 +msgid "Merge a range of revisions" +msgstr "" + +#: ui/glade/merge.glade.h:14 +msgid "Merge two different trees" +msgstr "" + +#: ui/glade/merge.glade.h:15 +msgid "Only record the merge" +msgstr "" + +#: ui/glade/merge.glade.h:18 +msgid "Show log" +msgstr "" + +#: ui/glade/merge.glade.h:19 +msgid "Test Merge" +msgstr "" + +#: ui/glade/merge.glade.h:20 +msgid "" +"Use the log dialog to select the revisions that you wish to merge. Or write " +"out the revisions manually, each separated by a comma. You can specify a " +"revision range by a dash. \n" +"\n" +"Example: 4-7,9,11,15-HEAD\n" +"\n" +"To merge all revisions, leave the box empty." +msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/index.theme rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/index.theme --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/index.theme 2008-12-26 23:00:10.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/index.theme 1970-01-01 00:00:00.000000000 +0000 @@ -1,1494 +0,0 @@ -[Icon Theme] -Name=Hicolor -Comment=Fallback icon theme -Hidden=true -Directories=16x16/actions,16x16/animations,16x16/apps,16x16/categories,16x16/devices,16x16/emblems,16x16/emotes,16x16/filesystems,16x16/intl,16x16/mimetypes,16x16/places,16x16/status,16x16/stock/chart,16x16/stock/code,16x16/stock/data,16x16/stock/form,16x16/stock/image,16x16/stock/io,16x16/stock/media,16x16/stock/navigation,16x16/stock/net,16x16/stock/object,16x16/stock/table,16x16/stock/text,22x22/actions,22x22/animations,22x22/apps,22x22/categories,22x22/devices,22x22/emblems,22x22/emotes,22x22/filesystems,22x22/intl,22x22/mimetypes,22x22/places,22x22/status,22x22/stock/chart,22x22/stock/code,22x22/stock/data,22x22/stock/form,22x22/stock/image,22x22/stock/io,22x22/stock/media,22x22/stock/navigation,22x22/stock/net,22x22/stock/object,22x22/stock/table,22x22/stock/text,24x24/actions,24x24/animations,24x24/apps,24x24/categories,24x24/devices,24x24/emblems,24x24/emotes,24x24/filesystems,24x24/intl,24x24/mimetypes,24x24/places,24x24/status,24x24/stock/chart,24x24/stock/code,24x24/stock/data,24x24/stock/form,24x24/stock/image,24x24/stock/io,24x24/stock/media,24x24/stock/navigation,24x24/stock/net,24x24/stock/object,24x24/stock/table,24x24/stock/text,32x32/actions,32x32/animations,32x32/apps,32x32/categories,32x32/devices,32x32/emblems,32x32/emotes,32x32/filesystems,32x32/intl,32x32/mimetypes,32x32/places,32x32/status,32x32/stock/chart,32x32/stock/code,32x32/stock/data,32x32/stock/form,32x32/stock/image,32x32/stock/io,32x32/stock/media,32x32/stock/navigation,32x32/stock/net,32x32/stock/object,32x32/stock/table,32x32/stock/text,36x36/actions,36x36/animations,36x36/apps,36x36/categories,36x36/devices,36x36/emblems,36x36/emotes,36x36/filesystems,36x36/intl,36x36/mimetypes,36x36/places,36x36/status,36x36/stock/chart,36x36/stock/code,36x36/stock/data,36x36/stock/form,36x36/stock/image,36x36/stock/io,36x36/stock/media,36x36/stock/navigation,36x36/stock/net,36x36/stock/object,36x36/stock/table,36x36/stock/text,48x48/actions,48x48/animations,48x48/apps,48x48/categories,48x48/devices,48x48/emblems,48x48/emotes,48x48/filesystems,48x48/intl,48x48/mimetypes,48x48/places,48x48/status,48x48/stock/chart,48x48/stock/code,48x48/stock/data,48x48/stock/form,48x48/stock/image,48x48/stock/io,48x48/stock/media,48x48/stock/navigation,48x48/stock/net,48x48/stock/object,48x48/stock/table,48x48/stock/text,64x64/actions,64x64/animations,64x64/apps,64x64/categories,64x64/devices,64x64/emblems,64x64/emotes,64x64/filesystems,64x64/intl,64x64/mimetypes,64x64/places,64x64/status,64x64/stock/chart,64x64/stock/code,64x64/stock/data,64x64/stock/form,64x64/stock/image,64x64/stock/io,64x64/stock/media,64x64/stock/navigation,64x64/stock/net,64x64/stock/object,64x64/stock/table,64x64/stock/text,72x72/actions,72x72/animations,72x72/apps,72x72/categories,72x72/devices,72x72/emblems,72x72/emotes,72x72/filesystems,72x72/intl,72x72/mimetypes,72x72/places,72x72/status,72x72/stock/chart,72x72/stock/code,72x72/stock/data,72x72/stock/form,72x72/stock/image,72x72/stock/io,72x72/stock/media,72x72/stock/navigation,72x72/stock/net,72x72/stock/object,72x72/stock/table,72x72/stock/text,96x96/actions,96x96/animations,96x96/apps,96x96/categories,96x96/devices,96x96/emblems,96x96/emotes,96x96/filesystems,96x96/intl,96x96/mimetypes,96x96/places,96x96/status,96x96/stock/chart,96x96/stock/code,96x96/stock/data,96x96/stock/form,96x96/stock/image,96x96/stock/io,96x96/stock/media,96x96/stock/navigation,96x96/stock/net,96x96/stock/object,96x96/stock/table,96x96/stock/text,128x128/actions,128x128/animations,128x128/apps,128x128/categories,128x128/devices,128x128/emblems,128x128/emotes,128x128/filesystems,128x128/intl,128x128/mimetypes,128x128/places,128x128/status,128x128/stock/chart,128x128/stock/code,128x128/stock/data,128x128/stock/form,128x128/stock/image,128x128/stock/io,128x128/stock/media,128x128/stock/navigation,128x128/stock/net,128x128/stock/object,128x128/stock/table,128x128/stock/text,192x192/actions,192x192/animations,192x192/apps,192x192/categories,192x192/devices,192x192/emblems,192x192/emotes,192x192/filesystems,192x192/intl,192x192/mimetypes,192x192/places,192x192/status,192x192/stock/chart,192x192/stock/code,192x192/stock/data,192x192/stock/form,192x192/stock/image,192x192/stock/io,192x192/stock/media,192x192/stock/navigation,192x192/stock/net,192x192/stock/object,192x192/stock/table,192x192/stock/text,scalable/actions,scalable/animations,scalable/apps,scalable/categories,scalable/devices,scalable/emblems,scalable/emotes,scalable/filesystems,scalable/intl,scalable/mimetypes,scalable/places,scalable/status,scalable/stock/chart,scalable/stock/code,scalable/stock/data,scalable/stock/form,scalable/stock/image,scalable/stock/io,scalable/stock/media,scalable/stock/navigation,scalable/stock/net,scalable/stock/object,scalable/stock/table,scalable/stock/text - - -[16x16/actions] -Size=16 -Context=Actions -Type=Threshold - -[16x16/animations] -Size=16 -Context=Animations -Type=Threshold - -[16x16/apps] -Size=16 -Context=Applications -Type=Threshold - -[16x16/categories] -Size=16 -Context=Categories -Type=Threshold - -[16x16/devices] -Size=16 -Context=Devices -Type=Threshold - -[16x16/emblems] -Size=16 -Context=Emblems -Type=Threshold - -[16x16/emotes] -Size=16 -Context=Emotes -Type=Threshold - -[16x16/filesystems] -Size=16 -Context=FileSystems -Type=Threshold - -[16x16/intl] -Size=16 -Context=International -Type=Threshold - -[16x16/mimetypes] -Size=16 -Context=MimeTypes -Type=Threshold - -[16x16/places] -Size=16 -Context=Places -Type=Threshold - -[16x16/status] -Size=16 -Context=Status -Type=Threshold - -[16x16/stock/chart] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/code] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/data] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/form] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/image] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/io] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/media] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/navigation] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/net] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/object] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/table] -Size=16 -Context=Stock -Type=Threshold - -[16x16/stock/text] -Size=16 -Context=Stock -Type=Threshold - -[22x22/actions] -Size=22 -Context=Actions -Type=Threshold - -[22x22/animations] -Size=22 -Context=Animations -Type=Threshold - -[22x22/apps] -Size=22 -Context=Applications -Type=Fixed - -[22x22/categories] -Size=22 -Context=Categories -Type=Threshold - -[22x22/devices] -Size=22 -Context=Devices -Type=Threshold - -[22x22/emblems] -Size=22 -Context=Emblems -Type=Threshold - -[22x22/emotes] -Size=22 -Context=Emotes -Type=Threshold - -[22x22/filesystems] -Size=22 -Context=FileSystems -Type=Threshold - -[22x22/intl] -Size=22 -Context=International -Type=Threshold - -[22x22/mimetypes] -Size=22 -Context=MimeTypes -Type=Threshold - -[22x22/places] -Size=22 -Context=Places -Type=Threshold - -[22x22/status] -Size=22 -Context=Status -Type=Threshold - -[22x22/stock/chart] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/code] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/data] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/form] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/image] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/io] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/media] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/navigation] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/net] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/object] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/table] -Size=22 -Context=Stock -Type=Threshold - -[22x22/stock/text] -Size=22 -Context=Stock -Type=Threshold - -[24x24/actions] -Size=24 -Context=Actions -Type=Threshold - -[24x24/animations] -Size=24 -Context=Animations -Type=Threshold - -[24x24/apps] -Size=24 -Context=Applications -Type=Threshold - -[24x24/categories] -Size=24 -Context=Categories -Type=Threshold - -[24x24/devices] -Size=24 -Context=Devices -Type=Threshold - -[24x24/emblems] -Size=24 -Context=Emblems -Type=Threshold - -[24x24/emotes] -Size=24 -Context=Emotes -Type=Threshold - -[24x24/filesystems] -Size=24 -Context=FileSystems -Type=Threshold - -[24x24/intl] -Size=24 -Context=International -Type=Threshold - -[24x24/mimetypes] -Size=24 -Context=MimeTypes -Type=Threshold - -[24x24/places] -Size=24 -Context=Places -Type=Threshold - -[24x24/status] -Size=24 -Context=Status -Type=Threshold - -[24x24/stock/chart] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/code] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/data] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/form] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/image] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/io] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/media] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/navigation] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/net] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/object] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/table] -Size=24 -Context=Stock -Type=Threshold - -[24x24/stock/text] -Size=24 -Context=Stock -Type=Threshold - -[32x32/actions] -Size=32 -Context=Actions -Type=Threshold - -[32x32/animations] -Size=32 -Context=Animations -Type=Threshold - -[32x32/apps] -Size=32 -Context=Applications -Type=Threshold - -[32x32/categories] -Size=32 -Context=Categories -Type=Threshold - -[32x32/devices] -Size=32 -Context=Devices -Type=Threshold - -[32x32/emblems] -Size=32 -Context=Emblems -Type=Threshold - -[32x32/emotes] -Size=32 -Context=Emotes -Type=Threshold - -[32x32/filesystems] -Size=32 -Context=FileSystems -Type=Threshold - -[32x32/intl] -Size=32 -Context=International -Type=Threshold - -[32x32/mimetypes] -Size=32 -Context=MimeTypes -Type=Threshold - -[32x32/places] -Size=32 -Context=Places -Type=Threshold - -[32x32/status] -Size=32 -Context=Status -Type=Threshold - -[32x32/stock/chart] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/code] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/data] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/form] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/image] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/io] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/media] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/navigation] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/net] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/object] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/table] -Size=32 -Context=Stock -Type=Threshold - -[32x32/stock/text] -Size=32 -Context=Stock -Type=Threshold - -[36x36/actions] -Size=36 -Context=Actions -Type=Threshold - -[36x36/animations] -Size=36 -Context=Animations -Type=Threshold - -[36x36/apps] -Size=36 -Context=Applications -Type=Threshold - -[36x36/categories] -Size=36 -Context=Categories -Type=Threshold - -[36x36/devices] -Size=36 -Context=Devices -Type=Threshold - -[36x36/emblems] -Size=36 -Context=Emblems -Type=Threshold - -[36x36/emotes] -Size=36 -Context=Emotes -Type=Threshold - -[36x36/filesystems] -Size=36 -Context=FileSystems -Type=Threshold - -[36x36/intl] -Size=36 -Context=International -Type=Threshold - -[36x36/mimetypes] -Size=36 -Context=MimeTypes -Type=Threshold - -[36x36/places] -Size=36 -Context=Places -Type=Threshold - -[36x36/status] -Size=36 -Context=Status -Type=Threshold - -[36x36/stock/chart] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/code] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/data] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/form] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/image] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/io] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/media] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/navigation] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/net] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/object] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/table] -Size=36 -Context=Stock -Type=Threshold - -[36x36/stock/text] -Size=36 -Context=Stock -Type=Threshold - -[48x48/actions] -Size=48 -Context=Actions -Type=Threshold - -[48x48/animations] -Size=48 -Context=Animations -Type=Threshold - -[48x48/apps] -Size=48 -Context=Applications -Type=Threshold - -[48x48/categories] -Size=48 -Context=Categories -Type=Threshold - -[48x48/devices] -Size=48 -Context=Devices -Type=Threshold - -[48x48/emblems] -Size=48 -Context=Emblems -Type=Threshold - -[48x48/emotes] -Size=48 -Context=Emotes -Type=Threshold - -[48x48/filesystems] -Size=48 -Context=FileSystems -Type=Threshold - -[48x48/intl] -Size=48 -Context=International -Type=Threshold - -[48x48/mimetypes] -Size=48 -Context=MimeTypes -Type=Threshold - -[48x48/places] -Size=48 -Context=Places -Type=Threshold - -[48x48/status] -Size=48 -Context=Status -Type=Threshold - -[48x48/stock/chart] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/code] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/data] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/form] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/image] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/io] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/media] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/navigation] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/net] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/object] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/table] -Size=48 -Context=Stock -Type=Threshold - -[48x48/stock/text] -Size=48 -Context=Stock -Type=Threshold - -[64x64/actions] -Size=64 -Context=Actions -Type=Threshold - -[64x64/animations] -Size=64 -Context=Animations -Type=Threshold - -[64x64/apps] -Size=64 -Context=Applications -Type=Threshold - -[64x64/categories] -Size=64 -Context=Categories -Type=Threshold - -[64x64/devices] -Size=64 -Context=Devices -Type=Threshold - -[64x64/emblems] -Size=64 -Context=Emblems -Type=Threshold - -[64x64/emotes] -Size=64 -Context=Emotes -Type=Threshold - -[64x64/filesystems] -Size=64 -Context=FileSystems -Type=Threshold - -[64x64/intl] -Size=64 -Context=International -Type=Threshold - -[64x64/mimetypes] -Size=64 -Context=MimeTypes -Type=Threshold - -[64x64/places] -Size=64 -Context=Places -Type=Threshold - -[64x64/status] -Size=64 -Context=Status -Type=Threshold - -[64x64/stock/chart] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/code] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/data] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/form] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/image] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/io] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/media] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/navigation] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/net] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/object] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/table] -Size=64 -Context=Stock -Type=Threshold - -[64x64/stock/text] -Size=64 -Context=Stock -Type=Threshold -[72x72/actions] -Size=72 -Context=Actions -Type=Threshold - -[72x72/animations] -Size=72 -Context=Animations -Type=Threshold - -[72x72/apps] -Size=72 -Context=Applications -Type=Threshold - -[72x72/categories] -Size=72 -Context=Categories -Type=Threshold - -[72x72/devices] -Size=72 -Context=Devices -Type=Threshold - -[72x72/emblems] -Size=72 -Context=Emblems -Type=Threshold - -[72x72/emotes] -Size=72 -Context=Emotes -Type=Threshold - -[72x72/filesystems] -Size=72 -Context=FileSystems -Type=Threshold - -[72x72/intl] -Size=72 -Context=International -Type=Threshold - -[72x72/mimetypes] -Size=72 -Context=MimeTypes -Type=Threshold - -[72x72/places] -Size=72 -Context=Places -Type=Threshold - -[72x72/status] -Size=72 -Context=Status -Type=Threshold - -[72x72/stock/chart] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/code] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/data] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/form] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/image] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/io] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/media] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/navigation] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/net] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/object] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/table] -Size=72 -Context=Stock -Type=Threshold - -[72x72/stock/text] -Size=72 -Context=Stock -Type=Threshold - -[96x96/actions] -Size=96 -Context=Actions -Type=Threshold - -[96x96/animations] -Size=96 -Context=Animations -Type=Threshold - -[96x96/apps] -Size=96 -Context=Applications -Type=Threshold - -[96x96/categories] -Size=96 -Context=Categories -Type=Threshold - -[96x96/devices] -Size=96 -Context=Devices -Type=Threshold - -[96x96/emblems] -Size=96 -Context=Emblems -Type=Threshold - -[96x96/emotes] -Size=96 -Context=Emotes -Type=Threshold - -[96x96/filesystems] -Size=96 -Context=FileSystems -Type=Threshold - -[96x96/intl] -Size=96 -Context=International -Type=Threshold - -[96x96/mimetypes] -Size=96 -Context=MimeTypes -Type=Threshold - -[96x96/places] -Size=96 -Context=Places -Type=Threshold - -[96x96/status] -Size=96 -Context=Status -Type=Threshold - -[96x96/stock/chart] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/code] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/data] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/form] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/image] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/io] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/media] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/navigation] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/net] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/object] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/table] -Size=96 -Context=Stock -Type=Threshold - -[96x96/stock/text] -Size=96 -Context=Stock -Type=Threshold - -[128x128/actions] -Size=128 -Context=Actions -Type=Threshold - -[128x128/animations] -Size=128 -Context=Animations -Type=Threshold - -[128x128/apps] -Size=128 -Context=Applications -Type=Threshold - -[128x128/categories] -Size=128 -Context=Categories -Type=Threshold - -[128x128/devices] -Size=128 -Context=Devices -Type=Threshold - -[128x128/emblems] -Size=128 -Context=Emblems -Type=Threshold - -[128x128/emotes] -Size=128 -Context=Emotes -Type=Threshold - -[128x128/filesystems] -Size=128 -Context=FileSystems -Type=Threshold - -[128x128/intl] -Size=128 -Context=International -Type=Threshold - -[128x128/mimetypes] -Size=128 -Context=MimeTypes -Type=Threshold - -[128x128/places] -Size=128 -Context=Places -Type=Threshold - -[128x128/status] -Size=128 -Context=Status -Type=Threshold - -[128x128/stock/chart] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/code] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/data] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/form] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/image] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/io] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/media] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/navigation] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/net] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/object] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/table] -Size=128 -Context=Stock -Type=Threshold - -[128x128/stock/text] -Size=128 -Context=Stock -Type=Threshold - -[192x192/actions] -Size=192 -Context=Actions -Type=Threshold - -[192x192/animations] -Size=192 -Context=Animations -Type=Threshold - -[192x192/apps] -Size=192 -Context=Applications -Type=Threshold - -[192x192/categories] -Size=192 -Context=Categories -Type=Threshold - -[192x192/devices] -Size=192 -Context=Devices -Type=Threshold - -[192x192/emblems] -Size=192 -Context=Emblems -Type=Threshold - -[192x192/emotes] -Size=192 -Context=Emotes -Type=Threshold - -[192x192/filesystems] -Size=192 -Context=FileSystems -Type=Threshold - -[192x192/intl] -Size=192 -Context=International -Type=Threshold - -[192x192/mimetypes] -Size=192 -Context=MimeTypes -Type=Threshold - -[192x192/places] -Size=192 -Context=Places -Type=Threshold - -[192x192/status] -Size=192 -Context=Status -Type=Threshold - -[192x192/stock/chart] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/code] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/data] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/form] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/image] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/io] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/media] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/navigation] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/net] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/object] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/table] -Size=192 -Context=Stock -Type=Threshold - -[192x192/stock/text] -Size=192 -Context=Stock -Type=Threshold - -[scalable/actions] -MinSize=1 -Size=128 -MaxSize=256 -Context=Actions -Type=Scalable - -[scalable/animations] -MinSize=1 -Size=128 -MaxSize=256 -Context=Animations -Type=Scalable - -[scalable/apps] -MinSize=1 -Size=128 -MaxSize=256 -Context=Applications -Type=Scalable - -[scalable/categories] -MinSize=1 -Size=128 -MaxSize=256 -Context=Categories -Type=Scalable - -[scalable/devices] -MinSize=1 -Size=128 -MaxSize=256 -Context=Devices -Type=Scalable - -[scalable/emblems] -MinSize=1 -Size=128 -MaxSize=256 -Context=Emblems -Type=Scalable - -[scalable/emotes] -MinSize=1 -Size=128 -MaxSize=256 -Context=Emotes -Type=Scalable - -[scalable/filesystems] -MinSize=1 -Size=128 -MaxSize=256 -Context=FileSystems -Type=Scalable - -[scalable/intl] -MinSize=1 -Size=128 -MaxSize=256 -Context=International -Type=Scalable - -[scalable/mimetypes] -MinSize=1 -Size=128 -MaxSize=256 -Context=MimeTypes -Type=Scalable - -[scalable/places] -MinSize=1 -Size=128 -MaxSize=256 -Context=Places -Type=Scalable - -[scalable/status] -MinSize=1 -Size=128 -MaxSize=256 -Context=Status -Type=Scalable - -[scalable/stock/chart] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/code] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/data] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/form] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/image] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/io] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/media] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/navigation] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/net] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/object] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/table] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - -[scalable/stock/text] -MinSize=1 -Size=128 -MaxSize=256 -Context=Stock -Type=Scalable - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-about.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-about.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-about.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-about.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,265 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-add.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-add.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-add.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-add.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,434 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Add - 2006-01-04 - - - Andreas Nilsson - - - http://tango-project.org - - - add - plus - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-annotate.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-annotate.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-annotate.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-annotate.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,284 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - System-log-out - 2007-08-27 - - - Lapo Calamandrei - - - - - - - Kalle Persson - - - - - logout - exit - man - sign - running - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-applypatch.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-applypatch.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-applypatch.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-applypatch.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,125 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-asynchronous.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-asynchronous.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-asynchronous.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-asynchronous.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,991 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Send and Receive Mail - - - Jakub Steiner - - - - - Andreas Nilsson, Garrett LeSage - - - - - - mail - e-mail - send - receive - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-branch.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-branch.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-branch.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-branch.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,261 +0,0 @@ - - - - - - - image/svg+xml - - View Fullscreen - - - - - - - http://jimmac.musichall.cz - - - Jakub Steiner - - - - - window - maximize - fullscreen - view - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-bug.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-bug.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-bug.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-bug.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,285 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-changes.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-changes.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-changes.svg 2009-11-13 14:38:45.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-changes.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-checkmods.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-checkmods.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-checkmods.svg 2009-11-05 16:41:12.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-checkmods.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,589 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - Lapo Calamandrei - - - Call Start - - - receiver - phone - call - start - answer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-checkout.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-checkout.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-checkout.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-checkout.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,951 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Edit Undo - - - edit - undo - revert - - - - - Andreas Nilsson -Lapo Calamandrei - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-cleanup.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-cleanup.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-cleanup.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-cleanup.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,366 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Ulisse Perusin - - - - uli.peru@gmail.com - edit-clear - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-clear.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-clear.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-clear.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-clear.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,366 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Ulisse Perusin - - - - uli.peru@gmail.com - edit-clear - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-commit.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-commit.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-commit.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-commit.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,214 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Edit Undo - - - edit - undo - revert - - - - - Andreas Nilsson -Lapo Calamandrei - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-compare.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-compare.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-compare.svg 2009-11-14 17:31:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-compare.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,422 +0,0 @@ - - - - - - - image/svg+xml - - Restore View - - - - - - - http://jimmac.musichall.cz - - - Jakub Steiner - - - - - window - fullscreen - view. restore - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-createpatch.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-createpatch.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-createpatch.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-createpatch.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-dbus.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-dbus.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-dbus.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-dbus.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Konversation application icon - March 2006 - - - Andreas Nilsson - - - http://tango-project.org - - - konversation - chat - irc - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-delete.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-delete.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-delete.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-delete.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,872 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Lapo Calamandrei - - - Trashbin - 2006-04-19 - - - - delete - remove - trashbin - trashcan - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-diff.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-diff.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-diff.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-diff.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,748 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Edit Find - - - edit - find - locate - search - - - - - - Steven Garrity - - - - - - Jakub Steiner - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-drive.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-drive.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-drive.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-drive.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,469 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Drive - Hard Disk - - - Jakub Steiner - - - - - hdd - hard drive - fixed - media - solid - - - - - http://jimmac.musichall.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-emblems.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-emblems.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-emblems.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-emblems.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,2571 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Photos - 2006-06-11 - - - Lapo Calamandrei - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-export.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-export.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-export.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-export.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,499 +0,0 @@ - - - - - - - image/svg+xml - - Folder Drag Accept - - - Jakub Steiner - - - - - http://jimmac.musichall.cz/ - - - folder - directory - storage - drag accept - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-help.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-help.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-help.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-help.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,213 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Help Browser - 2005-11-06 - - - Tuomas Kuosmanen - - - - - help - browser - documentation - docs - man - info - - - - - - Jakub Steiner, Andreas Nilsson - - - http://tigert.com - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-import.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-import.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-import.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-import.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,1047 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - Jakub Steiner, Lapo Calamandrei - - - - - - - - Drive Harddisk - - - hdd - drive - hard - fixed - media - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-lock.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-lock.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-lock.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-lock.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,630 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Lock Screen - - - - Jakub Steiner - - - - - video - display - lock - screen - password - session - screensaver - - - - http://jimmac.musichall.cz/ - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-merge.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-merge.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-merge.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-merge.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,422 +0,0 @@ - - - - - - - image/svg+xml - - Restore View - - - - - - - http://jimmac.musichall.cz - - - Jakub Steiner - - - - - window - fullscreen - view. restore - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-monkey.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-monkey.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-monkey.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-monkey.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,583 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - face-monkey - - - Ulisse Perusin - - - - - based on the work of someone who didn't fill the metadata... - - - - - emotes - monkey - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-properties.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-properties.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-properties.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-properties.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,574 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Document Properties - - - document - settings - preferences - properties - tweak - - - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-refresh.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-refresh.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-refresh.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-refresh.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,397 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - View Refresh - - - reload - refresh - view - - - - - Ricardo 'Rick' González - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-relocate.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-relocate.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-relocate.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-relocate.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,197 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-rename.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-rename.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-rename.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-rename.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,311 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Text Editor - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-resolve.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-resolve.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-resolve.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-resolve.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,366 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Ulisse Perusin - - - - uli.peru@gmail.com - edit-clear - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-revert.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-revert.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-revert.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-revert.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,218 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Edit Undo - - - edit - undo - revert - - - - - Andreas Nilsson -Lapo Calamandrei - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-run.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-run.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-run.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-run.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,562 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Lapo Calamandrei - - - System Run - - - - run - launch - exec - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-settings.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-settings.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-settings.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-settings.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,685 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - System Preferences - - - Andreas Nilsson - - - - - category - system - preferences - settings - control center - - - - - Jakub Steiner -Ulisse Perusin - - - - - - - - - - - - - - image/svg+xml - - Preferences - - - Andreas Nilsson - - - - - Lapo Calamandrei, Ulisse Perusin, Jakub Steiner - - - - - - category - system - preferences - settings - control center - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-show_log.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-show_log.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-show_log.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-show_log.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - Lapo Calamandrei - - - Log Viewer - - - log - viewer - inspect - system - utility - - - 3 set 2006 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-stop.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-stop.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-stop.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-stop.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,334 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Stop - 2005-10-16 - - - Andreas Nilsson - - - - - stop - halt - error - - - - - - Jakub Steiner - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-switch.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-switch.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-switch.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-switch.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Go Jump - - - go - jump - seek - arrow - pointer - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-unlock.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-unlock.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-unlock.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-unlock.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,557 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Lapo Calamandrei - - - - - - Ulisse Perusin - - - Keys - - - keys - key - password - authentication - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-update.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-update.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-update.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/actions/rabbitvcs-update.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,223 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Edit Undo - - - edit - undo - revert - - - - - Andreas Nilsson -Lapo Calamandrei - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/apps/rabbitvcs-small.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/apps/rabbitvcs-small.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/apps/rabbitvcs-small.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/apps/rabbitvcs-small.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/apps/rabbitvcs.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/apps/rabbitvcs.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/apps/rabbitvcs.svg 2009-09-28 14:21:36.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/apps/rabbitvcs.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,254 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-added.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-added.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-added.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-added.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-calculating.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-calculating.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-calculating.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-calculating.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,450 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Lapo Calamandrei - - - Clock - - - - clock - time - date - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-conflicted.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-conflicted.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-conflicted.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-conflicted.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-deleted.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-deleted.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-deleted.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-deleted.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-error.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-error.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-error.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-error.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,248 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-ignored.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-ignored.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-ignored.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-ignored.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-locked.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-locked.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-locked.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-locked.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,310 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-modified.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-modified.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-modified.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-modified.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-normal.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-normal.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-normal.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-normal.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-obstructed.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-obstructed.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-obstructed.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-obstructed.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-read_only.svg rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-read_only.svg --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-read_only.svg 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/emblem-rabbitvcs-read_only.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/README rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/README --- rabbitvcs-0.13.1/rabbitvcs/data/icons/hicolor/scalable/emblems/README 2009-09-28 11:25:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/data/icons/hicolor/scalable/emblems/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -TortoiseSVN - SVG emblems/overlays -Licensed under: GPL v2 or later - -Except: -emblem-rabbitvcs-calculating.svg: (C) 2009 Bruce van der Kooij -emblem-rabbitvcs-error.svg: (C) 2009 Jason Heeris -Licensed under: GPL v2 or later diff -Nru rabbitvcs-0.13.1/rabbitvcs/debug/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/debug/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/debug/__init__.py 2009-09-28 11:01:11.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/debug/__init__.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -Nru rabbitvcs-0.13.1/rabbitvcs/debug/ipython_view.py rabbitvcs-0.15.0.5/rabbitvcs/debug/ipython_view.py --- rabbitvcs-0.13.1/rabbitvcs/debug/ipython_view.py 2008-12-31 12:42:08.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/debug/ipython_view.py 2010-05-27 16:46:50.000000000 +0000 @@ -1,4 +1,3 @@ -#!/usr/bin/python ''' Provides IPython console widget. diff -Nru rabbitvcs-0.13.1/rabbitvcs/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/__init__.py 2010-03-26 15:11:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/__init__.py 2011-11-09 19:11:00.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,15 +19,22 @@ # You should have received a copy of the GNU General Public License # along with RabbitVCS; If not, see . # - + import os import gettext as _gettext from locale import getdefaultlocale -version = "0.13.1" +# Hack to make RabbitVCS win in the battle against TortoiseHg +try: + import mercurial.demandimport + mercurial.demandimport.enable = lambda: None +except Exception, e: + pass + +version = "0.15.0.5" APP_NAME = "RabbitVCS" TEMP_DIR_PREFIX = "rabbitvcs-" -LOCALE_DIR = "%s/locale" % os.path.dirname(os.path.abspath(__file__)) +LOCALE_DIR = "%s/locale" % os.path.dirname(os.path.dirname(os.path.realpath(__file__))) if not os.path.exists(LOCALE_DIR): LOCALE_DIR = "/usr/share/locale" @@ -45,7 +52,6 @@ gettext = _gettext.translation(APP_NAME, LOCALE_DIR, languages=langs, fallback=True) - def package_name(): """ Report the application name in a form appropriate for building @@ -72,3 +78,27 @@ """ return "%s-%s" % (package_name(), package_version()) + +def package_prefix(): + """ + Return the prefix of the local RabbitVCS installation + + """ + + try: + from rabbitvcs.buildinfo import rabbitvcs_prefix + return rabbitvcs_prefix + except ImportError, e: + return "" + +def get_icon_path(): + """ + Return the path to the icon folder + + """ + + try: + from rabbitvcs.buildinfo import icon_path + return icon_path + except ImportError, e: + return "%s/data/icons/hicolor" % os.path.dirname(os.path.dirname(os.path.realpath(__file__))) diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/configspec/configspec.ini rabbitvcs-0.15.0.5/rabbitvcs/lib/configspec/configspec.ini --- rabbitvcs-0.13.1/rabbitvcs/lib/configspec/configspec.ini 2010-02-26 16:55:45.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/configspec/configspec.ini 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -[general] -language = string(default="English") -enable_attributes = boolean(default=True) -enable_emblems = boolean(default=True) -enable_recursive = boolean(default=True) -show_debug = boolean(default=False) - -[external] -diff_tool = string(default="/usr/bin/meld") -diff_tool_swap = boolean(default=False) - -[cache] -number_repositories = integer(default=30) -number_messages = integer(default=30) - -[logging] -type = option("None", "File", "Console", "Both", default="File") -level = option("Debug", "Warning", "Info", "Error", "Critical", default="Error") diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/contextmenuitems.py rabbitvcs-0.15.0.5/rabbitvcs/lib/contextmenuitems.py --- rabbitvcs-0.13.1/rabbitvcs/lib/contextmenuitems.py 2010-04-01 13:47:02.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/contextmenuitems.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,688 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2010 by Jason Heeris -# Copyright (C) 2008-2010 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -import os.path - -import gtk - -import rabbitvcs.lib.helper - -from rabbitvcs import gettext -_ = gettext.gettext - -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.ui.contextmenuitems") -_ = gettext.gettext - - -SEPARATOR = u'\u2015' * 10 - -class MenuItem(object): - """ - This is the base class for a definition of a menu item. Consider this - "abstract" (in the language of Java) - it makes no sense to instantiate it - directly. If you want to define a new kind of menu item, you need to - subclass it like so: - - class MenuPerformMagic: - identifier = "RabbitVCS::Perform_Magic" - label = _("Perform Magic") - tooltip = _("Put on your robe and wizard hat") - icon = "rabbitvcs-wand" # or, say, gtk.STOCK_OPEN - - There is some introspection magic that goes on to associate the items - themselves with certain methods of a ContextMenuCondition object or a - ContextMenuCallback object. This is done by looking at the identifier - the - part of the identifier after "::" is converted to lowercase and the item - looks for a method of that name (eg. in the example above, - "perform_magic"). - - It is easy to override this, just define condition_name and callback_name - to be what you need. If the item cannot find anything, it defaults to not - assigning the callback and having the condition return False. - - There a few ways to organise this (and maybe it would be better to have the - GtkContextMenu class do it), but this is it for the moment. - """ - - @staticmethod - def default_condition(*args, **kwargs): - return False - - @staticmethod - def make_default_name(identifier): - return identifier.split(MenuItem.IDENTIFIER_SEPARATOR)[-1].lower() - - IDENTIFIER_SEPARATOR = "::" - - # These are all explicitly defined here to make it obvious what a subclass - # needs to set up. - - # This is relevant for GTK and Nautilus - they require unique identifiers - # for all the elements of their menus. Make sure it starts with - # "RabbitVCS::" - identifier = None - - # The label that appears on the menu item. It is up to the subclass to - # designate it as translatable. - label = None - - # The tooltip for the menu item. It is up to the subclass to designate it as - # translatable. - tooltip = "" - - # The icon that will appear on the menu item. This can be, say, - # "rabbitvcs-something" or gtk.STOCK_SOMETHING - icon = None - - # This is a string that holds the name of the function that is called when - # the menu item is activated (it is assigned to - # self.signals["activate"]["callback"]) - # - # The menu item will look for a callable attribute of this name in the - # callback object passed in to the constructor. If it is None, it will try - # to assign a default callback based on the identifier. If nothing is found - # then no callback will be assigned to the "activate" signal. - callback_name = None - callback_args = () - - - # This is a string that holds the name of the function that is called to - # determine whether to show the item. - # - # The menu item will look for a callable attribute of this name in the - # callback object passed in to the constructor. If it is None, or False, or - # it cannot find anything, it will set up a function that returns False. - condition_name = None - condition_args = () - - def __init__(self, conditions, callbacks): - """ - Creates a new menu item for constructing the GTK context menu. - """ - - self.signals = {} - - default_name = MenuItem.make_default_name(self.identifier) - - # These flags are used for sanity checks that developers can run to - # ensure completeness of conditions and callbacks. - # See contextmenu.TestMenuItemFunctions() - self.found_callback = False - self.found_condition = False - - # If no callback name is set, assign the default - if self.callback_name is None: - # log.debug("Using default callback name: %s" % default_name) - self.callback_name = default_name - - # Try to get the callback function for this item - self.callback = self._get_function(callbacks, self.callback_name) - -# else: -# log.debug("Could not find callback for %s" % self.identifier) - - self.condition = { - "callback": MenuItem.default_condition, - "args": self.condition_args - } - - if self.condition_name is None: - self.condition_name = default_name - - condition = self._get_function(conditions, self.condition_name) - - if condition: - self.condition["callback"] = condition - self.found_condition = True -# else: -# log.debug("Could not find condition for %s" % self.identifier) - - def show(self): - return self.condition["callback"](*self.condition["args"]) - - def _get_function(self, object, name): - - function = None - - if hasattr(object, name): - - attr = getattr(object, name) - if callable(attr): - function = attr - - return function - - def make_magic_id(self, id_magic = None): - identifier = self.identifier - - if id_magic: - identifier = identifier + "-" + str(id_magic) - - return identifier - - def make_action(self, id_magic = None): - """ - Creates the GTK Action for the menu item. To avoid GTK "helpfully" - preventing us from adding duplicates (eg. separators), you can pass in - a string that will be appended and separated from the actual identifier. - """ - identifier = self.make_magic_id(id_magic) - return gtk.Action(identifier, self.label, None, None) - - def make_thunar_action(self, id_magic = None): - identifier = self.make_magic_id(id_magic) - action = RabbitVCSAction( - identifier, - self.label, - self.tooltip, - self.icon - ) - - return action - - def make_gtk_menu_item(self, id_magic = None): - action = self.make_action(id_magic) - - if self.icon: - # We use this instead of gtk.Action.set_icon_name because - # that method is not available until pygtk 2.16 - action.set_menu_item_type(gtk.ImageMenuItem) - menuitem = action.create_menu_item() - menuitem.set_image(gtk.image_new_from_icon_name(self.icon, gtk.ICON_SIZE_MENU)) - else: - menuitem = action.create_menu_item() - - return menuitem - - def make_nautilus_menu_item(self, id_magic = None): - # WARNING: this import is here because it will fail if it is not done - # inside a nautilus process and therefore can't be in the module proper. - # I'm happy to let the exception propagate the rest of the time, since - # this method shouldn't be called outside of nautilus. - identifier = self.make_magic_id(id_magic) - import nautilus - menuitem = nautilus.MenuItem( - identifier, - self.label, - self.tooltip, - self.icon - ) - - return menuitem - -class MenuSeparator(MenuItem): - identifier = "RabbitVCS::Separator" - label = SEPARATOR - - def make_insensitive(self, menuitem): - menuitem.set_property("sensitive", False) - - def make_thunar_action(self, id_magic = None): - menuitem = super(MenuSeparator, self).make_thunar_action(id_magic) - self.make_insensitive(menuitem) - return menuitem - # FIXME: I thought that this would work to create separators, - # but all I get are black "-"s... - # I thought - #~ identifier = self.make_magic_id(id_magic) - #~ # This information is not actually used, but is necessary for - #~ # the required subclassing of GtkAction. - #~ action = RabbitVCSSeparator( - #~ identifier, - #~ self.label, - #~ self.tooltip, - #~ self.icon, - #~ ) - #~ return action - - # Make separators insensitive - def make_gtk_menu_item(self, id_magic = None): - menuitem = gtk.SeparatorMenuItem() - menuitem.show() - return menuitem - - def make_nautilus_menu_item(self, id_magic = None): - menuitem = super(MenuSeparator, self).make_nautilus_menu_item(id_magic) - self.make_insensitive(menuitem) - return menuitem - -class MenuDebug(MenuItem): - identifier = "RabbitVCS::Debug" - label = _("Debug") - icon = "rabbitvcs-monkey" - -class MenuBugs(MenuItem): - identifier = "RabbitVCS::Bugs" - label = _("Bugs") - icon = "rabbitvcs-bug" - -class MenuDebugShell(MenuItem): - identifier = "RabbitVCS::Debug_Shell" - label = _("Open Shell") - icon = "gnome-terminal" - condition_name = "debug" - -class MenuRefreshStatus(MenuItem): - identifier = "RabbitVCS::Refresh_Status" - label = _("Refresh Status") - icon = "rabbitvcs-refresh" - -class MenuDebugRevert(MenuItem): - identifier = "RabbitVCS::Debug_Revert" - label = _("Debug Revert") - tooltip = _("Reverts everything it sees") - icon = "rabbitvcs-revert" - condition_name = "debug" - -class MenuDebugInvalidate(MenuItem): - identifier = "RabbitVCS::Debug_Invalidate" - label = _("Invalidate") - tooltip = _("Force an invalidate_extension_info() call") - icon = "rabbitvcs-clear" - condition_name = "debug" - -class MenuDebugAddEmblem(MenuItem): - identifier = "RabbitVCS::Debug_Add_Emblem" - label = _("Add Emblem") - tooltip = _("Add an emblem") - icon = "rabbitvcs-emblems" - condition_name = "debug" - -class MenuCheckout(MenuItem): - identifier = "RabbitVCS::Checkout" - label = _("Checkout...") - tooltip = _("Check out a working copy") - icon = "rabbitvcs-checkout" -class MenuUpdate(MenuItem): - identifier = "RabbitVCS::Update" - label = _("Update") - tooltip = _("Update a working copy") - icon = "rabbitvcs-update" - -class MenuCommit(MenuItem): - identifier = "RabbitVCS::Commit" - label = _("Commit") - tooltip = _("Commit modifications to the repository") - icon = "rabbitvcs-commit" - -class MenuRabbitVCS(MenuItem): - identifier = "RabbitVCS::RabbitVCS" - label = _("RabbitVCS") - icon = "rabbitvcs" - -class MenuRepoBrowser(MenuItem): - identifier = "RabbitVCS::Repo_Browser" - label = _("Repository Browser") - tooltip = _("Browse a repository tree") - icon = gtk.STOCK_FIND - -class MenuCheckForModifications(MenuItem): - identifier = "RabbitVCS::Check_For_Modifications" - label = _("Check for Modifications...") - tooltip = _("Check for modifications made to the repository") - icon = "rabbitvcs-checkmods" - -class MenuDiffMenu(MenuItem): - identifier = "RabbitVCS::Diff_Menu" - label = _("Diff Menu...") - tooltip = _("List of comparison options") - icon = "rabbitvcs-diff" - -class MenuDiff(MenuItem): - identifier = "RabbitVCS::Diff" - label = _("View diff against base") - tooltip = _("View the modifications made to a file") - icon = "rabbitvcs-diff" - -class MenuDiffMultiple(MenuItem): - identifier = "RabbitVCS::Diff_Multiple" - label = _("View diff between files/folders") - tooltip = _("View the differences between two files") - icon = "rabbitvcs-diff" - -class MenuDiffPrevRev(MenuItem): - identifier = "RabbitVCS::Diff_Previous_Revision" - label = _("View diff against previous revision") - tooltip = _("View the modifications made to a file since its last change") - icon = "rabbitvcs-diff" - -class MenuCompareTool(MenuItem): - identifier = "RabbitVCS::Compare_Tool" - label = _("Compare with base") - tooltip = _("Compare with base using side-by-side comparison tool") - icon = "rabbitvcs-compare" - -class MenuCompareToolMultiple(MenuItem): - identifier = "RabbitVCS::Compare_Tool_Multiple" - label = _("Compare files/folders") - tooltip = _("Compare the differences between two items") - icon = "rabbitvcs-compare" - -class MenuCompareToolPrevRev(MenuItem): - identifier = "RabbitVCS::Compare_Tool_Previous_Revision" - label = _("Compare with previous revision") - tooltip = _("Compare with previous revision using side-by-side comparison tool") - icon = "rabbitvcs-compare" - -class MenuShowChanges(MenuItem): - identifier = "RabbitVCS::Show_Changes" - label = _("Show Changes...") - tooltip = _("Show changes between paths and revisions") - icon = "rabbitvcs-changes" - -class MenuShowLog(MenuItem): - identifier = "RabbitVCS::Show_Log" - label = _("Show Log") - tooltip = _("Show a file's log information") - icon = "rabbitvcs-show_log" - -class MenuAdd(MenuItem): - identifier = "RabbitVCS::Add" - label = _("Add") - tooltip = _("Schedule items to be added to the repository") - icon = "rabbitvcs-add" - -class MenuAddToIgnoreList(MenuItem): - identifier = "RabbitVCS::Add_To_Ignore_List" - label = _("Add to ignore list") - icon = None - -class MenuUpdateToRevision(MenuItem): - identifier = "RabbitVCS::Update_To_Revision" - label = _("Update to revision...") - tooltip = _("Update a file to a specific revision") - icon = "rabbitvcs-update" - -class MenuRename(MenuItem): - identifier = "RabbitVCS::Rename" - label = _("Rename...") - tooltip = _("Schedule an item to be renamed on the repository") - icon = "rabbitvcs-rename" - -class MenuDelete(MenuItem): - identifier = "RabbitVCS::Delete" - label = _("Delete") - tooltip = _("Schedule an item to be deleted from the repository") - icon = "rabbitvcs-delete" - -class MenuRevert(MenuItem): - identifier = "RabbitVCS::Revert" - label = _("Revert") - tooltip = _("Revert an item to its unmodified state") - icon = "rabbitvcs-revert" - -class MenuResolve(MenuItem): - identifier = "RabbitVCS::Resolve" - label = _("Resolve") - tooltip = _("Mark a conflicted item as resolved") - icon = "rabbitvcs-resolve" - -class MenuRestore(MenuItem): - identifier = "RabbitVCS::Restore" - label = _("Restore") - tooltip = _("Restore a missing item") - -class MenuRelocate(MenuItem): - identifier = "RabbitVCS::Relocate" - label = _("Relocate...") - tooltip = _("Relocate your working copy") - icon = "rabbitvcs-relocate" - -class MenuGetLock(MenuItem): - identifier = "RabbitVCS::Get_Lock" - label = _("Get Lock...") - tooltip = _("Locally lock items") - icon = "rabbitvcs-lock" - -class MenuUnlock(MenuItem): - identifier = "RabbitVCS::Unlock" - label = _("Release Lock...") - tooltip = _("Release lock on an item") - icon = "rabbitvcs-unlock" - -class MenuCleanup(MenuItem): - identifier = "RabbitVCS::Cleanup" - label = _("Cleanup") - tooltip = _("Clean up working copy") - icon = "rabbitvcs-cleanup" - -class MenuExport(MenuItem): - identifier = "RabbitVCS::Export" - label = _("Export...") - tooltip = _("Export a working copy or repository with no versioning information") - icon = "rabbitvcs-export" - -class MenuCreateRepository(MenuItem): - identifier = "RabbitVCS::Create_Repository" - label = _("Create Repository here") - tooltip = _("Create a repository in a folder") - icon = "rabbitvcs-run" - -class MenuImport(MenuItem): - identifier = "RabbitVCS::Import" - label = _("Import") - tooltip = _("Import an item into a repository") - icon = "rabbitvcs-import" - # "import" is reserved - condition_name = "_import" - callback_name = "_import" - - -class MenuBranchTag(MenuItem): - identifier = "RabbitVCS::Branch_Tag" - label = _("Branch/tag...") - tooltip = _("Copy an item to another location in the repository") - icon = "rabbitvcs-branch" - -class MenuSwitch(MenuItem): - identifier = "RabbitVCS::Switch" - label = _("Switch...") - tooltip = _("Change the repository location of a working copy") - icon = "rabbitvcs-switch" - -class MenuMerge(MenuItem): - identifier = "RabbitVCS::Merge" - label = _("Merge...") - tooltip = _("A wizard with steps for merging") - icon = "rabbitvcs-merge" - -class MenuAnnotate(MenuItem): - identifier = "RabbitVCS::Annotate" - label = _("Annotate...") - tooltip = _("Annotate a file") - icon = "rabbitvcs-annotate" - -class MenuCreatePatch(MenuItem): - identifier = "RabbitVCS::Create_Patch" - label = _("Create Patch...") - tooltip = _("Creates a unified diff file with all changes you made") - icon = "rabbitvcs-createpatch" - -class MenuApplyPatch(MenuItem): - identifier = "RabbitVCS::Apply_Patch" - label = _("Apply Patch...") - tooltip = _("Applies a unified diff file to the working copy") - icon = "rabbitvcs-applypatch" - -class MenuProperties(MenuItem): - identifier = "RabbitVCS::Properties" - label = _("Properties") - tooltip = _("View the properties of an item") - icon = "rabbitvcs-properties" - -class MenuHelp(MenuItem): - identifier = "RabbitVCS::Help" - label = _("Help") - tooltip = _("View help") - icon = "rabbitvcs-help" - -class MenuSettings(MenuItem): - identifier = "RabbitVCS::Settings" - label = _("Settings") - tooltip = _("View or change RabbitVCS settings") - icon = "rabbitvcs-settings" - -class MenuAbout(MenuItem): - identifier = "RabbitVCS::About" - label = _("About") - tooltip = _("About RabbitVCS") - icon = "rabbitvcs-about" - -class MenuOpen(MenuItem): - identifier = "RabbitVCS::Open" - label = _("Open") - tooltip = _("Open a file") - icon = gtk.STOCK_OPEN - # Not sure why, but it was like this before... - condition_name = "_open" - callback_name = "_open" - -class MenuBrowseTo(MenuItem): - identifier = "RabbitVCS::Browse_To" - label = _("Browse to") - tooltip = _("Browse to a file or folder") - icon = gtk.STOCK_HARDDISK - -class PropMenuRevert(MenuItem): - identifier = "RabbitVCS::Property_Revert" - label = _("Revert property") - icon = "rabbitvcs-revert" - tooltip = _("Revert this property to its original state") - -class PropMenuRevertRecursive(MenuItem): - identifier = "RabbitVCS::Property_Revert_Recursive" - label = _("Revert property (recursive)") - icon = "rabbitvcs-revert" - tooltip = _("Revert this property to its original state (recursive)") - condition_name = "property_revert" - -class PropMenuDelete(MenuItem): - identifier = "RabbitVCS::Property_Delete" - label = _("Delete property") - icon = "rabbitvcs-delete" - tooltip = _("Delete this property") - -class PropMenuDeleteRecursive(MenuItem): - identifier = "RabbitVCS::Property_Delete_Recursive" - label = _("Delete property (recursive)") - icon = "rabbitvcs-delete" - tooltip = _("Delete this property (recursive)") - condition_name = "property_delete" - -class PropMenuEdit(MenuItem): - identifier = "RabbitVCS::Property_Edit" - label = _("Edit details") - icon = gtk.STOCK_EDIT - tooltip = _("Show and edit property details") - -def get_ignore_list_items(paths): - """ - Build up a list of items to ignore based on the selected paths - - @param paths: The selected paths - @type paths: list - - """ - ignore_items = [] - - # Used to weed out duplicate menu items - added_ignore_labels = [] - - # These are ignore-by-filename items - ignorebyfilename_index = 0 - for path in paths: - basename = os.path.basename(path) - if basename not in added_ignore_labels: - key = "IgnoreByFileName%s" % str(ignorebyfilename_index) - - class MenuIgnoreFilenameClass(MenuItem): - identifier = "RabbitVCS::%s" % key - label = basename - tooltip = _("Ignore item by filename") - callback_name = "ignore_by_filename" - callback_args = (path) - condition_name = "ignore_by_filename" - condition_args = (path) - - ignore_items.append((MenuIgnoreFilenameClass, None)) - - # These are ignore-by-extension items - ignorebyfileext_index = 0 - for path in paths: - extension = rabbitvcs.lib.helper.get_file_extension(path) - - ext_str = "*%s"%extension - if ext_str not in added_ignore_labels: - - class MenuIgnoreFileExtClass(MenuItem): - identifier = "RabbitVCS::%s" % key - label = ext_str - tooltip = _("Ignore item by file extension") - callback_name = "ignore_by_file_extension" - callback_args = (path, extension) - condition_name = "ignore_by_file_extension" - condition_args = (path, extension) - - ignore_items.append((MenuIgnoreFileExtClass, None)) - - return ignore_items - -class RabbitVCSAction(gtk.Action): - """ - Sub-classes gtk.Action so that we can have submenus - """ - - __gtype_name__ = "RabbitVCSAction" - - def __init__(self, name, label, tooltip, stock_id): - gtk.Action.__init__(self, name, label, tooltip, stock_id) - self.sub_actions = None - self.stock_id = stock_id - - def __repr__(self): - return self.get_name() - - def set_sub_actions(self, sub_actions): - self.sub_actions = sub_actions - - def do_create_menu_item(self): - menu_item = gtk.ImageMenuItem() - if self.stock_id: - menu_item.set_image(gtk.image_new_from_icon_name(self.stock_id, gtk.ICON_SIZE_MENU)) - - if self.sub_actions is not None: - menu = gtk.Menu() - menu_item.set_submenu(menu) - - for sub_action in self.sub_actions: - subitem = sub_action.create_menu_item() - menu.append(subitem) - subitem.show() - - return menu_item - -# FIXME: apparently it's possible to get real GtkSeparators in a Thunar -# menu, but this doesn't seem to work. -class RabbitVCSSeparator(RabbitVCSAction): - - def do_create_menu_item(self): - return gtk.SeparatorMenuItem() diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/contextmenu.py rabbitvcs-0.15.0.5/rabbitvcs/lib/contextmenu.py --- rabbitvcs-0.13.1/rabbitvcs/lib/contextmenu.py 2010-03-26 14:33:32.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/contextmenu.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,1257 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2010 by Jason Heeris -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2010 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -import os.path -from time import sleep -from collections import deque - -import gtk -import gobject - -from rabbitvcs.lib.vcs import create_vcs_instance -from rabbitvcs.lib.log import Log -from rabbitvcs import gettext -from rabbitvcs.lib.settings import SettingsManager -import rabbitvcs.lib.helper - -# Yes, * imports are bad. You write it out then. -from contextmenuitems import * - -log = Log("rabbitvcs.ui.contextmenu") -_ = gettext.gettext - -settings = SettingsManager() - -import rabbitvcs.services -from rabbitvcs.services.checkerservice import StatusCheckerStub as StatusChecker - -class MenuBuilder(object): - """ - Generalised menu builder class. Subclasses must provide: - - connect_to_signal(self, menuitem, callback, callback_args) - connect the - menu item to a signal (or do whatever needs to be done) so that the callback - is called upon activation. - - In actual fact, a standard GTK compatible method for this is provided by - this class. All a subclass has to do is define the class parameter "signal", - and it will be automatically done. - - make_menu_item(self, item, id_magic) - create the menu item for whatever - toolkit (usually this should be just call a convenience method on the - MenuItem instance). - - attach_submenu(self, menu_node, submenu_list) - given a list of whatever - make_menu_item(...) returns, create a submenu and attach it to the given - node. - - top_level_menu(self, items) - in some circumstances we need to treat the top - level menu differently (eg. Nautilus, because Xenu said so). This processes - a list of menu items returned by make_menu_item(...) to create the overall - menu. - """ - - def __init__(self, structure, conditions, callbacks): - """ - @param structure: Menu structure - @type structure: list - - Note on "structure". The menu structure is defined in a list of tuples - of two elements each. The first element is a class - the MenuItem - subclass that defines the menu interface (see below). - - The second element is either None (if there is no submenu) or a list of - tuples if there is a submenu. The submenus are generated recursively. - FYI, this is a list of tuples so that we retain the desired menu item - order (dicts do not retain order) - - Example: - [ - (MenuClassOne, [ - (MenuClassOneSubA, None), - (MenuClassOneSubB, None) - ]), - (MenuClassTwo, None), - (MenuClassThree, None) - ] - - """ - # The index is mostly for identifier magic - index = 0 - last_level = -1 - last_item = last_menuitem = None - - stack = [] # ([items], last_item, last_menuitem) - flat_structure = rabbitvcs.lib.helper.walk_tree_depth_first( - structure, - show_levels=True, - preprocess=lambda x: x(conditions, callbacks), - filter=lambda x: x.show()) - - # Here's how this works: we walk the tree, which is a series of (level, - # MenuItem instance) tuples. We accumulate items in the list in - # stack[level][0], and when we go back up a level we put them in a - # submenu (as defined by the subclasses). We need to keep track of the - # last item on each level, in case they are separators, so that's on the - # stack too. - for (level, item) in flat_structure: - index += 1 - - # Have we dropped back a level? Restore previous context - if level < last_level: - # We may have ended up descending several levels (it works, but - # please no-one write triply nested menus, it's just dumb). - for num in range(last_level - level): - # Remove separators at the end of menus - if type(last_item) == MenuSeparator: - stack[-1][0].remove(last_menuitem) - - (items, last_item, last_menuitem) = stack.pop() - - # Every time we back out of a level, we attach the list of - # items as a submenu, however the subclass wants to do it. - self.attach_submenu(last_menuitem, items) - - # Have we gone up a level? Save the context and create a submenu - if level > last_level: - # Skip separators at the start of a menu - if type(item) == MenuSeparator: continue - - stack.append(([], last_item, last_menuitem)) - - last_item = last_menuitem = None - - # Skip duplicate separators - if (type(last_item) == type(item) == MenuSeparator and - level == last_level): - continue - - menuitem = self.make_menu_item(item, index) - - self.connect_signal(menuitem, item.callback, item.callback_args) - - stack[-1][0].append(menuitem) - - last_item = item - last_menuitem = menuitem - last_level = level - - # Hey, we're out of the loop. Go back up any remaining levels (in case - # there were submenus at the end) and finish the job. - for (items, last_item2, last_menuitem2) in stack[:0:-1]: - - if type(last_item) == MenuSeparator: - stack[-1][0].remove(last_menuitem) - - self.attach_submenu(last_menuitem2, items) - - last_item = last_item2 - last_menuitem = last_menuitem2 - - if stack: - self.menu = self.top_level_menu(stack[0][0]) - else: - print "Empty top level menu!" - self.menu = self.top_level_menu([]) - - def connect_signal(self, menuitem, callback, callback_args): - if callback: - if callback_args: - menuitem.connect(self.signal, callback, callback_args) - else: - menuitem.connect(self.signal, callback) - -class GtkContextMenu(MenuBuilder): - """ - Provides a standard Gtk Context Menu class used for all context menus - in gtk dialogs/windows. - - """ - - signal = "button-press-event" - - def make_menu_item(self, item, id_magic): - return item.make_gtk_menu_item(id_magic) - - def attach_submenu(self, menu_node, submenu_list): - submenu = gtk.Menu() - menu_node.set_submenu(submenu) - [submenu.add(item) for item in submenu_list] - - def top_level_menu(self, items): - menu = gtk.Menu() - [menu.add(item) for item in items] - return menu - - def show(self, event): - self.menu.show_all() - self.menu.popup(None, None, None, event.button, event.time) - - def get_widget(self): - return self.menu - -class GtkContextMenuCaller: - """ - Provides an abstract interface to be inherited by dialogs/windows that call - a GtkContextMenu. Allows us to have a standard common set of methods we can - call from the callback object. - """ - - def __init__(self): - pass - - def reload_treeview(self): - pass - - def reload_treeview_threaded(self): - pass - - def rescan_after_process_exit(self, proc, paths=None): - self.execute_after_process_exit(proc, self.reload_treeview) - - def execute_after_process_exit(self, proc, callback=None): - if callback is None: - callback = self.reload_treeview - - def is_process_still_alive(): - log.debug("is_process_still_alive() for pid: %i" % proc.pid) - # First we need to see if the process is still running - - retval = proc.poll() - - log.debug("%s" % retval) - - still_going = (retval is None) - - if not still_going and callable(callback): - callback() - - return still_going - - # Add our callback function on a 1 second timeout - gobject.timeout_add_seconds(1, is_process_still_alive) - -class ContextMenuCallbacks: - """ - The base class for context menu callbacks. This is inheritied by - sub-classes. - """ - def __init__(self, caller, base_dir, vcs_client, paths=[]): - """ - @param caller: The calling object - @type caller: RabbitVCS extension - - @param base_dir: The curent working directory - @type base_dir: string - - @param vcs_client: The vcs client to be used - @type vcs_client: rabbitvcs.lib.vcs.create_vcs_instance() - - @param paths: The selected paths - @type paths: list - - """ - self.caller = caller - self.base_dir = base_dir - self.vcs_client = vcs_client - self.paths = paths - - def debug_shell(self, widget, data1=None, data2=None): - """ - - Open up an IPython shell which shares the context of the extension. - - See: http://ipython.scipy.org/moin/Cookbook/EmbeddingInGTK - - """ - import gtk - from rabbitvcs.debug.ipython_view import IPythonView - - window = gtk.Window() - window.set_size_request(750,550) - window.set_resizable(True) - window.set_position(gtk.WIN_POS_CENTER) - scrolled_window = gtk.ScrolledWindow() - scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - ipython_view = IPythonView() - ipython_view.updateNamespace(locals()) - ipython_view.set_wrap_mode(gtk.WRAP_CHAR) - ipython_view.show() - scrolled_window.add(ipython_view) - scrolled_window.show() - window.add(scrolled_window) - window.show() - - def refresh_status(self, widget, data1=None, data2=None): - """ - Refreshes an item status, which is actually just invalidate. - """ - - self.debug_invalidate(menu_item) - - def debug_revert(self, widget, data1=None, data2=None): - client = pysvn.Client() - for path in self.paths: - client.revert(path, recurse=True) - - def debug_invalidate(self, widget, data1=None, data2=None): - rabbitvcs_extension = self.caller - nautilusVFSFile_table = rabbitvcs_extension.nautilusVFSFile_table - for path in self.paths: - log.debug("callback_debug_invalidate() called for %s" % path) - if path in nautilusVFSFile_table: - nautilusVFSFile_table[path].invalidate_extension_info() - - def debug_add_emblem(self, widget, data1=None, data2=None): - def add_emblem_dialog(): - from subprocess import Popen, PIPE - command = ["zenity", "--entry", "--title=RabbitVCS", "--text=Emblem to add:"] - emblem = Popen(command, stdout=PIPE).communicate()[0].replace("\n", "") - - rabbitvcs_extension = self.caller - nautilusVFSFile_table = rabbitvcs_extension.nautilusVFSFile_table - for path in self.paths: - if path in nautilusVFSFile_table: - nautilusVFSFile_table[path].add_emblem(emblem) - return False - - gobject.idle_add(add_emblem_dialog) - - # End debugging callbacks - - def checkout(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("checkout", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def update(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("update", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def commit(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("commit", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def add(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("add", self.paths) - self.caller.execute_after_process_exit(proc) - - def check_for_modifications(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("checkmods", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def delete(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("delete", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def revert(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("revert", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def diff(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("diff", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def diff_multiple(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("diff", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def diff_previous_revision(self, widget, data1=None, data2=None): - previous_revision_number = self.vcs_client.get_revision(self.paths[0]) - 1 - - pathrev1 = rabbitvcs.lib.helper.create_path_revision_string(self.vcs_client.get_repo_url(self.paths[0]), previous_revision_number) - pathrev2 = rabbitvcs.lib.helper.create_path_revision_string(self.paths[0], "working") - - proc = rabbitvcs.lib.helper.launch_ui_window("diff", [pathrev1, pathrev2]) - self.caller.rescan_after_process_exit(proc, self.paths) - - def compare_tool(self, widget, data1=None, data2=None): - pathrev1 = rabbitvcs.lib.helper.create_path_revision_string(self.paths[0], "base") - pathrev2 = rabbitvcs.lib.helper.create_path_revision_string(self.paths[0], "working") - - proc = rabbitvcs.lib.helper.launch_ui_window("diff", ["-s", pathrev1, pathrev2]) - self.caller.rescan_after_process_exit(proc, self.paths) - - def compare_tool_multiple(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("diff", ["-s"] + self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def compare_tool_previous_revision(self, widget, data1=None, data2=None): - previous_revision_number = self.vcs_client.get_revision(self.paths[0]) - 1 - - pathrev1 = rabbitvcs.lib.helper.create_path_revision_string(self.vcs_client.get_repo_url(self.paths[0]), previous_revision_number) - pathrev2 = rabbitvcs.lib.helper.create_path_revision_string(self.paths[0], "working") - - proc = rabbitvcs.lib.helper.launch_ui_window("diff", ["-s", pathrev1, pathrev2]) - self.caller.rescan_after_process_exit(proc, self.paths) - - def show_changes(self, widget, data1=None, data2=None): - pathrev1 = rabbitvcs.lib.helper.create_path_revision_string(self.paths[0]) - pathrev2 = pathrev1 - if len(self.paths) == 2: - pathrev2 = rabbitvcs.lib.helper.create_path_revision_string(self.paths[1]) - - proc = rabbitvcs.lib.helper.launch_ui_window("changes", [pathrev1, pathrev2]) - self.caller.rescan_after_process_exit(proc, self.paths) - - def show_log(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("log", self.paths) - self.caller.execute_after_process_exit(proc) - - def rename(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("rename", self.paths) - self.caller.execute_after_process_exit(proc) - - def create_patch(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("createpatch", self.paths) - self.caller.execute_after_process_exit(proc) - - def apply_patch(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("applypatch", self.paths) - self.caller.rescan_after_process_exit(proc, self.paths) - - def properties(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("property_editor", self.paths) - self.caller.execute_after_process_exit(proc) - - def about(self, widget, data1=None, data2=None): - rabbitvcs.lib.helper.launch_ui_window("about") - - def settings(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("settings") - self.caller.reload_settings(proc) - - def ignore_by_filename(self, widget, data1=None, data2=None): - for path in self.paths: - prop_name = self.vcs_client.PROPERTIES["ignore"] - prop_value = os.path.basename(path) - self.vcs_client.propset( - self.base_dir, - prop_name, - prop_value - ) - - def ignore_by_file_extension(self, widget, data1=None, data2=None): - prop_name = self.vcs_client.PROPERTIES["ignore"] - prop_value = "*%s" % rabbitvcs.lib.helper.get_file_extension(self.paths[0]) - self.vcs_client.propset( - self.base_dir, - prop_name, - prop_value, - recurse=True - ) - - def get_lock(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("lock", self.paths) - self.caller.execute_after_process_exit(proc) - - def branch_tag(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("branch", self.paths) - self.caller.execute_after_process_exit(proc) - - def switch(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("switch", self.paths) - self.caller.execute_after_process_exit(proc) - - def merge(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("merge", self.paths) - self.caller.execute_after_process_exit(proc) - - def _import(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("import", self.paths) - self.caller.execute_after_process_exit(proc) - - def export(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("export", self.paths) - self.caller.execute_after_process_exit(proc) - - def update_to_revision(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("updateto", self.paths) - self.caller.execute_after_process_exit(proc) - - def resolve(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("resolve", self.paths) - self.caller.execute_after_process_exit(proc) - - def annotate(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("annotate", self.paths) - self.caller.execute_after_process_exit(proc) - - def unlock(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("unlock", self.paths) - self.caller.execute_after_process_exit(proc) - - def create_repository(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("create", self.paths) - self.caller.execute_after_process_exit(proc) - - def relocate(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("relocate", self.paths) - self.caller.execute_after_process_exit(proc) - - def cleanup(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("cleanup", self.paths) - self.caller.execute_after_process_exit(proc) - - def restore(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("update", self.paths) - self.caller.execute_after_process_exit(proc) - - def _open(self, widget, data1=None, data2=None): - pass - - def browse_to(self, widget, data1=None, data2=None): - pass - - def repo_browser(self, widget, data1=None, data2=None): - path = self.paths[0] - url = "" - if self.vcs_client.is_versioned(path): - url = self.vcs_client.get_repo_url(path) - - proc = rabbitvcs.lib.helper.launch_ui_window("browser", [url]) - - -class ContextMenuConditions: - """ - Provides a standard interface to checking conditions for menu items. - - This class should never be instantied directly, rather the narrowly defined - FileManagerContextMenuConditions and GtkFilesContextMenuConditions classes - should be called. - - """ - def __init__(self): - pass - - def generate_path_dict(self, paths): - self.path_dict = { - "length": len(paths) - } - - checks = { - "is_dir" : os.path.isdir, - "is_file" : os.path.isfile, - "exists" : os.path.exists, - "is_working_copy" : self.vcs_client.is_working_copy, - "is_in_a_or_a_working_copy" : self.vcs_client.is_in_a_or_a_working_copy, - "is_versioned" : self.vcs_client.is_versioned, - "is_normal" : lambda path: self.statuses[path]["text_status"] == "normal" and self.statuses[path]["prop_status"] == "normal", - "is_added" : lambda path: self.statuses[path]["text_status"] == "added", - "is_modified" : lambda path: self.statuses[path]["text_status"] == "modified" or self.statuses[path]["prop_status"] == "modified", - "is_deleted" : lambda path: self.statuses[path]["text_status"] == "deleted", - "is_ignored" : lambda path: self.statuses[path]["text_status"] == "ignored", - "is_locked" : lambda path: self.statuses[path]["text_status"] == "locked", - "is_missing" : lambda path: self.statuses[path]["text_status"] == "missing", - "is_conflicted" : lambda path: self.statuses[path]["text_status"] == "conflicted", - "is_obstructed" : lambda path: self.statuses[path]["text_status"] == "obstructed", - "has_unversioned" : lambda path: "unversioned" in self.text_statuses, - "has_added" : lambda path: "added" in self.text_statuses, - "has_modified" : lambda path: "modified" in self.text_statuses or "modified" in self.prop_statuses, - "has_deleted" : lambda path: "deleted" in self.text_statuses, - "has_ignored" : lambda path: "ignored" in self.text_statuses, - "has_locked" : lambda path: "locked" in self.text_statuses, - "has_missing" : lambda path: "missing" in self.text_statuses, - "has_conflicted" : lambda path: "conflicted" in self.text_statuses, - "has_obstructed" : lambda path: "obstructed" in self.text_statuses - } - - for key,func in checks.items(): - self.path_dict[key] = False - - # Each path gets tested for each check - # If a check has returned True for any path, skip it for remaining paths - for path in paths: - for key, func in checks.items(): - if not self.statuses.has_key(path): - self.path_dict[key] = False - elif key not in self.path_dict or self.path_dict[key] is not True: - self.path_dict[key] = func(path) - - def checkout(self, data=None): - return (self.path_dict["length"] == 1 and - self.path_dict["is_dir"] and - not self.path_dict["is_working_copy"]) - - def update(self, data=None): - return (self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"] and - not self.path_dict["is_added"]) - - def commit(self, data=None): - if self.path_dict["is_in_a_or_a_working_copy"]: - if (self.path_dict["is_added"] or - self.path_dict["is_modified"] or - self.path_dict["is_deleted"] or - not self.path_dict["is_versioned"]): - return True - elif (self.path_dict["is_dir"]): - return True - return False - - def diff_menu(self, data=None): - return self.path_dict["is_in_a_or_a_working_copy"] - - def diff_multiple(self, data=None): - if (self.path_dict["length"] == 2 and - self.path_dict["is_versioned"] and - self.path_dict["is_in_a_or_a_working_copy"]): - return True - return False - - def compare_tool_multiple(self, data=None): - if (self.path_dict["length"] == 2 and - self.path_dict["is_versioned"] and - self.path_dict["is_in_a_or_a_working_copy"]): - return True - return False - - def diff(self, data=None): - if (self.path_dict["length"] == 1 and - self.path_dict["is_in_a_or_a_working_copy"] and - (self.path_dict["is_modified"] or self.path_dict["has_modified"] or - self.path_dict["is_conflicted"] or self.path_dict["has_conflicted"])): - return True - return False - - def diff_previous_revision(self, data=None): - if (self.path_dict["length"] == 1 and - self.path_dict["is_in_a_or_a_working_copy"]): - return True - return False - - def compare_tool(self, data=None): - if (self.path_dict["length"] == 1 and - self.path_dict["is_in_a_or_a_working_copy"] and - (self.path_dict["is_modified"] or self.path_dict["has_modified"] or - self.path_dict["is_conflicted"] or self.path_dict["has_conflicted"])): - return True - return False - - def compare_tool_previous_revision(self, data=None): - if (self.path_dict["length"] == 1 and - self.path_dict["is_in_a_or_a_working_copy"]): - return True - return False - - def show_changes(self, data=None): - return (self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"] and - self.path_dict["length"] in (1,2)) - - def show_log(self, data=None): - return (self.path_dict["length"] == 1 and - self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"] and - not self.path_dict["is_added"]) - - def add(self, data=None): - if (self.path_dict["is_dir"] and - self.path_dict["is_in_a_or_a_working_copy"]): - return True - elif (not self.path_dict["is_dir"] and - self.path_dict["is_in_a_or_a_working_copy"] and - not self.path_dict["is_versioned"]): - return True - return False - - def check_for_modifications(self, data=None): - return (self.path_dict["is_working_copy"] or - self.path_dict["is_versioned"]) - -# def add_to_ignore_list(self, data=None): -# return self.path_dict["is_versioned"] - - def rename(self, data=None): - return (self.path_dict["length"] == 1 and - self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"]) - - def delete(self, data=None): - return self.path_dict["exists"] or self.path_dict["is_versioned"] - - def revert(self, data=None): - if self.path_dict["is_in_a_or_a_working_copy"]: - if (self.path_dict["is_added"] or - self.path_dict["is_modified"] or - self.path_dict["is_deleted"]): - return True - else: - if (self.path_dict["is_dir"] and - (self.path_dict["has_added"] or - self.path_dict["has_modified"] or - self.path_dict["has_deleted"] or - self.path_dict["has_missing"])): - return True - return False - - def annotate(self, data=None): - return (self.path_dict["length"] == 1 and - not self.path_dict["is_dir"] and - self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"] and - not self.path_dict["is_added"]) - - def properties(self, data=None): - return (self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"]) - - def create_patch(self, data=None): - if self.path_dict["is_in_a_or_a_working_copy"]: - if (self.path_dict["is_added"] or - self.path_dict["is_modified"] or - self.path_dict["is_deleted"] or - not self.path_dict["is_versioned"]): - return True - elif (self.path_dict["is_dir"] and - (self.path_dict["has_added"] or - self.path_dict["has_modified"] or - self.path_dict["has_deleted"] or - self.path_dict["has_unversioned"] or - self.path_dict["has_missing"])): - return True - return False - - def apply_patch(self, data=None): - if self.path_dict["is_in_a_or_a_working_copy"]: - return True - return False - - def add_to_ignore_list(self, data=None): - return (self.path_dict["is_in_a_or_a_working_copy"] and - not self.path_dict["is_versioned"]) - - def ignore_by_filename(self, *args): - return (self.path_dict["is_in_a_or_a_working_copy"] and - not self.path_dict["is_versioned"]) - - def ignore_by_file_extension(self, *args): - return (self.path_dict["is_in_a_or_a_working_copy"] and - not self.path_dict["is_versioned"]) - - def refresh_status(self, data=None): - return True - - def get_lock(self, data=None): - return self.path_dict["is_versioned"] - - def branch_tag(self, data=None): - return self.path_dict["is_versioned"] - - def relocate(self, data=None): - return self.path_dict["is_versioned"] - - def switch(self, data=None): - return self.path_dict["is_versioned"] - - def merge(self, data=None): - return self.path_dict["is_versioned"] - - def _import(self, data=None): - return (self.path_dict["length"] == 1 and - not self.path_dict["is_in_a_or_a_working_copy"]) - - def export(self, data=None): - return (self.path_dict["length"] == 1) - - def update_to_revision(self, data=None): - return (self.path_dict["length"] == 1 and - self.path_dict["is_versioned"] and - self.path_dict["is_in_a_or_a_working_copy"]) - - def resolve(self, data=None): - return (self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"] and - self.path_dict["is_conflicted"]) - - def create_repository(self, data=None): - return (self.path_dict["length"] == 1 and - not self.path_dict["is_in_a_or_a_working_copy"]) - - def unlock(self, data=None): - return (self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"] and - self.path_dict["has_locked"]) - - def cleanup(self, data=None): - return self.path_dict["is_versioned"] - - def browse_to(self, data=None): - return self.path_dict["exists"] - - def _open(self, data=None): - return self.path_dict["is_file"] - - def restore(self, data=None): - return self.path_dict["has_missing"] - - def update(self, data=None): - return (self.path_dict["is_in_a_or_a_working_copy"] and - self.path_dict["is_versioned"] and - not self.path_dict["is_added"]) - - def repo_browser(self, data=None): - return True - - def rabbitvcs(self, data=None): - return True - - def debug(self, data=None): - return settings.get("general", "show_debug") - - def separator(self, data=None): - return True - - def help(self, data=None): - return False - - def settings(self, data=None): - return True - - def about(self, data=None): - return True - - def bugs(self, data=None): - return True - -class GtkFilesContextMenuCallbacks(ContextMenuCallbacks): - """ - A callback class created for GtkFilesContextMenus. This class inherits from - the standard ContextMenuCallbacks class and overrides some methods. - """ - def __init__(self, caller, base_dir, vcs_client, paths=[]): - """ - @param caller: The calling object - @type caller: RabbitVCS extension - - @param base_dir: The curent working directory - @type base_dir: string - - @param vcs_client: The vcs client to be used - @type vcs_client: rabbitvcs.lib.vcs.create_vcs_instance() - - @param paths: The selected paths - @type paths: list - - """ - ContextMenuCallbacks.__init__(self, caller, base_dir, vcs_client, paths) - - def _open(self, widget, data1=None, data2=None): - for path in self.paths: - rabbitvcs.lib.helper.open_item(path) - - def add(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("add", ["-q"] + self.paths) - self.caller.execute_after_process_exit(proc) - - def revert(self, widget, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("revert", ["-q"] + self.paths) - self.caller.execute_after_process_exit(proc) - - def browse_to(self, widget, data1=None, data2=None): - rabbitvcs.lib.helper.browse_to_item(self.paths[0]) - - def delete(self, widget, data1=None, data2=None): - if len(self.paths) > 0: - from rabbitvcs.ui.delete import Delete - Delete(self.paths).start() - sleep(1) # sleep so the items can be fully deleted before init - self.caller.reload_treeview() - - def ignore_by_filename(self, widget, data1=None, data2=None): - for path in self.paths: - prop_name = self.vcs_client.PROPERTIES["ignore"] - prop_value = os.path.basename(path) - self.vcs_client.propset( - self.base_dir, - prop_name, - prop_value - ) - - self.caller.reload_treeview() - - def ignore_by_file_extension(self, widget, data1=None, data2=None): - for path in self.paths: - prop_name = self.vcs_client.PROPERTIES["ignore"] - prop_value = "*%s" % rabbitvcs.lib.helper.get_file_extension(path) - self.vcs_client.propset( - self.base_dir, - prop_name, - prop_value, - recurse=True - ) - - self.caller.reload_treeview() - - def update(self, data1=None, data2=None): - proc = rabbitvcs.lib.helper.launch_ui_window("update", self.paths) - self.caller.execute_after_process_exit(proc) - - def unlock(self, data1=None, data2=None): - from rabbitvcs.ui.unlock import UnlockQuick - unlock = UnlockQuick(self.paths) - unlock.start() - - self.caller.reload_treeview() - - def show_log(self, data1=None, data2=None): - from rabbitvcs.ui.log import LogDialog - LogDialog(self.vcs_client.get_repo_url(self.paths[0])) - - -class GtkFilesContextMenuConditions(ContextMenuConditions): - """ - Sub-class for ContextMenuConditions for our dialogs. Allows us to override - some generic condition methods with condition logic more suitable - to the dialogs. - - """ - def __init__(self, vcs_client, paths=[]): - """ - @param vcs_client: The vcs client to be used - @type vcs_client: rabbitvcs.lib.vcs.create_vcs_instance() - - @param paths: The selected paths - @type paths: list - - """ - self.vcs_client = vcs_client - self.paths = paths - self.statuses = {} - - self.generate_statuses(self.paths) - self.generate_path_dict(self.paths) - - def generate_statuses(self, paths): - self.statuses = {} - for path in paths: - if not path: - continue - - statuses_tmp = self.vcs_client.status(path) - for status in statuses_tmp: - self.statuses[status.path] = { - "text_status": self.vcs_client.STATUS_REVERSE[status.text_status], - "prop_status": self.vcs_client.STATUS_REVERSE[status.prop_status] - } - - self.text_statuses = [self.statuses[key]["text_status"] for key in self.statuses.keys()] - self.prop_statuses = [self.statuses[key]["prop_status"] for key in self.statuses.keys()] - - def delete(self, data=None): - return self.path_dict["exists"] - -class GtkFilesContextMenu: - """ - Defines context menu items for a table with files - - """ - def __init__(self, caller, event, base_dir, paths=[], - conditions=None, callbacks=None): - """ - @param caller: The calling object - @type caller: RabbitVCS extension - - @param base_dir: The curent working directory - @type base_dir: string - - @param paths: The selected paths - @type paths: list - - @param conditions: The conditions class that determines menu item visibility - @kind conditions: ContextMenuConditions - - @param callbacks: The callbacks class that determines what actions are taken - @kind callbacks: ContextMenuCallbacks - - """ - self.caller = caller - self.event = event - self.paths = paths - self.base_dir = base_dir - self.vcs_client = create_vcs_instance() - - self.conditions = conditions - if self.conditions is None: - self.conditions = GtkFilesContextMenuConditions(self.vcs_client, paths) - - self.callbacks = callbacks - if self.callbacks is None: - self.callbacks = GtkFilesContextMenuCallbacks( - self.caller, - self.base_dir, - self.vcs_client, - paths - ) - - ignore_items = get_ignore_list_items(paths) - - # The first element of each tuple is a key that matches a - # ContextMenuItems item. The second element is either None when there - # is no submenu, or a recursive list of tuples for desired submenus. - self.structure = [ - (MenuDiff, None), - (MenuCompareTool, None), - (MenuUnlock, None), - (MenuShowLog, None), - (MenuOpen, None), - (MenuBrowseTo, None), - (MenuDelete, None), - (MenuRevert, None), - (MenuRestore, None), - (MenuAdd, None), - (MenuAddToIgnoreList, ignore_items) - ] - - def show(self): - if len(self.paths) == 0: - return - - context_menu = GtkContextMenu(self.structure, self.conditions, self.callbacks) - context_menu.show(self.event) - - def get_menu(self): - context_menu = GtkContextMenu(self.structure, self.conditions, self.callbacks) - return context_menu.menu - -class MainContextMenuCallbacks(ContextMenuCallbacks): - """ - The callback class used for the main context menu. This inherits from - and overrides the ContextMenuCallbacks class. - - """ - def __init__(self, caller, base_dir, vcs_client, paths=[]): - """ - @param caller: The calling object - @type caller: RabbitVCS extension - - @param base_dir: The curent working directory - @type base_dir: string - - @param vcs_client: The vcs client to be used - @type vcs_client: rabbitvcs.lib.vcs.create_vcs_instance() - - @param paths: The selected paths - @type paths: list - - """ - ContextMenuCallbacks.__init__(self, caller, base_dir, vcs_client, paths) - -class MainContextMenuConditions(ContextMenuConditions): - """ - Sub-class for ContextMenuConditions used for file manager extensions. - Allows us to override some generic condition methods with condition logic - more suitable to the dialogs. - - """ - def __init__(self, vcs_client, paths=[]): - """ - @param vcs_client: The vcs client to be used - @type vcs_client: rabbitvcs.lib.vcs.create_vcs_instance() - - @param paths: The selected paths - @type paths: list - - """ - - self.vcs_client = vcs_client - self.paths = paths - self.status_checker = StatusChecker() - self.statuses = {} - - self.generate_statuses(paths) - self.generate_path_dict(paths) - - def generate_statuses(self, paths): - self.statuses = {} - for path in paths: - # FIXME: possibly this should be a checker, not a cache? - self.statuses.update(self.status_checker.check_status(path, - recurse=True)) - - self.text_statuses = [self.statuses[key]["text_status"] for key in self.statuses.keys()] - self.prop_statuses = [self.statuses[key]["prop_status"] for key in self.statuses.keys()] - -class MainContextMenu: - """ - Defines and composes the main context menu. - - """ - def __init__(self, caller, base_dir, paths=[], - conditions=None, callbacks=None): - """ - @param caller: The calling object - @type caller: RabbitVCS extension - - @param base_dir: The curent working directory - @type base_dir: string - - @param paths: The selected paths - @type paths: list - - @param conditions: The conditions class that determines menu item visibility - @kind conditions: ContextMenuConditions - - @param callbacks: The callbacks class that determines what actions are taken - @kind callbacks: ContextMenuCallbacks - - """ - self.caller = caller - self.paths = paths - self.base_dir = base_dir - self.vcs_client = create_vcs_instance() - - self.conditions = conditions - if self.conditions is None: - self.conditions = MainContextMenuConditions(self.vcs_client, paths) - - self.callbacks = callbacks - if self.callbacks is None: - self.callbacks = MainContextMenuCallbacks( - self.caller, - self.base_dir, - self.vcs_client, - paths - ) - - ignore_items = get_ignore_list_items(paths) - - # The first element of each tuple is a key that matches a - # ContextMenuItems item. The second element is either None when there - # is no submenu, or a recursive list of tuples for desired submenus. - self.structure = [ - (MenuDebug, [ - (MenuBugs, None), - (MenuDebugShell, None), - (MenuRefreshStatus, None), - (MenuDebugRevert, None), - (MenuDebugInvalidate, None), - (MenuDebugAddEmblem, None) - ]), - (MenuCheckout, None), - (MenuUpdate, None), - (MenuCommit, None), - (MenuRabbitVCS, [ - (MenuDiffMenu, [ - (MenuDiff, None), - (MenuDiffPrevRev, None), - (MenuDiffMultiple, None), - (MenuCompareTool, None), - (MenuCompareToolPrevRev, None), - (MenuCompareToolMultiple, None), - (MenuShowChanges, None), - ]), - (MenuShowLog, None), - (MenuRepoBrowser, None), - (MenuCheckForModifications, None), - (MenuSeparator, None), - (MenuAdd, None), - (MenuAddToIgnoreList, ignore_items), - (MenuSeparator, None), - (MenuUpdateToRevision, None), - (MenuRename, None), - (MenuDelete, None), - (MenuRevert, None), - (MenuResolve, None), - (MenuRelocate, None), - (MenuGetLock, None), - (MenuUnlock, None), - (MenuCleanup, None), - (MenuSeparator, None), - (MenuExport, None), - (MenuCreateRepository, None), - (MenuImport, None), - (MenuSeparator, None), - (MenuBranchTag, None), - (MenuSwitch, None), - (MenuMerge, None), - (MenuSeparator, None), - (MenuAnnotate, None), - (MenuSeparator, None), - (MenuCreatePatch, None), - (MenuApplyPatch, None), - (MenuProperties, None), - (MenuSeparator, None), - (MenuSettings, None), - (MenuAbout, None) - ]) - ] - - def get_menu(self): - pass - -def TestMenuItemFunctions(): - """ - This is a test for developers to ensure that they've written all the - necessary conditions and callbacks (and haven't made any typos). - - What it does: - - build a list of all the subclasses of MenuItem - - build lists of the methods in ContextMenuConditions/ContextMenuCallbacks - - checks to see whether all the MenuItems conditions and callbacks have - been assigned - if not, a message is printed - """ - - # These are some simple tests: - import inspect - import types - - import contextmenuitems - - menu_item_subclasses = [] - - # Let's create a list of all MenuItem subclasses - for name in dir(contextmenuitems): - entity = getattr(contextmenuitems, name) - if type(entity) == types.ClassType: - mro = inspect.getmro(entity) - if (entity is not contextmenuitems.MenuItem and - contextmenuitems.MenuItem in mro): - menu_item_subclasses.append(entity) - - condition_functions = [] - - # Now let's create a list of all of the functions in our conditions class - for name in dir(ContextMenuConditions): - entity = getattr(ContextMenuConditions, name) - if type(entity) == types.UnboundMethodType and not name.startswith("__"): - condition_functions.append(entity) - - callback_functions = [] - - # ...and in our callbacks class - for name in dir(ContextMenuCallbacks): - entity = getattr(ContextMenuCallbacks, name) - if type(entity) == types.UnboundMethodType and not name.startswith("__"): - condition_functions.append(entity) - - for cls in menu_item_subclasses: - item = cls(ContextMenuConditions(), ContextMenuCallbacks(None, None, None, None)) - if not item.found_condition: - print "Did not find condition function in ContextMenuConditions " \ - "for %s (type: %s)" % (item.identifier, cls) - if not item.callback: - print "Did not find callback function in ContextMenuCallbacks " \ - "for %s (type: %s)" % (item.identifier, cls) - - -if __name__ == "__main__": - TestMenuItemFunctions() diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/decorators.py rabbitvcs-0.15.0.5/rabbitvcs/lib/decorators.py --- rabbitvcs-0.13.1/rabbitvcs/lib/decorators.py 2009-11-20 10:31:25.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/decorators.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2006-2008 by Jason Field -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -""" - -Simple decorators (usable in Python >= 2.4). - -Decorators should be named as verbs (present or paste tense). - -See: - - - https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker/linkcheck/decorators.py - - http://wiki.python.org/moin/PythonDecoratorLibrary - -""" - -import time -import warnings -import threading - -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.lib.decorators") - - -import gtk - -def update_func_meta(fake_func, real_func): - """ - Set meta information (eg. __doc__) of fake function to that of the real - function. - - @rtype: function - @return Fake function with metadata of the real function. - """ - - fake_func.__module__ = real_func.__module__ - fake_func.__name__ = real_func.__name__ - fake_func.__doc__ = real_func.__doc__ - fake_func.__dict__.update(real_func.__dict__) - - return fake_func - -def deprecated(func): - """ - A decorator which can be used to mark functions as deprecated. - It emits a warning when the function is called. - - @type func: function - @param func: The function to be designated as deprecated. - """ - - def newfunc(*args, **kwargs): - """ - Print deprecated warning and execute original function. - """ - warnings.warn("Call to deprecated function %s." % func.__name__, - category=DeprecationWarning) - return func(*args, **kwargs) - - return update_func_meta(newfunc, func) - -def timeit(func): - """ - This is a decorator which times a function and prints the time it took in - milliseconds to stdout. - - Based on the timeit function from LinkChecker. - - @type func: function - @param func: The function to be timed. - - """ - - def newfunc(*args, **kwargs): - """Execute function and print execution time.""" - start_time = time.time() - result = func(*args, **kwargs) - duration = (time.time() - start_time) * 1000.0 - log.info("%s() took %0.4f milliseconds" % (func.__name__, duration)) - return result - - return update_func_meta(newfunc, func) - -def disable(func): - """ - Disable a function. - - @type func: function - @param func: The function to be disabled. - - """ - - def newfunc(*args, **kwargs): - return - - return update_func_meta(newfunc, func) - -def gtk_unsafe(func): - """ - Used to wrap a function that makes calls to GTK from a thread in - gtk.gdk.threads_enter() and gtk.gdk.threads_leave(). - - """ - - def newfunc(*args, **kwargs): - gtk.gdk.threads_enter() - result = func(*args, **kwargs) - gtk.gdk.threads_leave() - return result - - return update_func_meta(newfunc, func) - -def debug_calls(caller_log, show_caller=False): - """ - Given a log to write messages to, wrap a function and log its invocation - and return. Use like: - - @debug_calls(my_modules_log) - def actual_function(...): - ... - - Warning: do not use with DBUS decorated methods, as this will play havoc - with introspection. - """ - - # We need a function within a function to be able to use the log argument. - def real_debug(func): - - def newfunc(*args, **kwargs): - caller_log.debug("Calling: %s (%s)" % - (func.__name__, - threading.currentThread().getName())) - - result = func(*args, **kwargs) - caller_log.debug("Returned: %s (%s)" % - (func.__name__, - threading.currentThread().getName())) - return result - - return update_func_meta(newfunc, func) - - return real_debug diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/helper.py rabbitvcs-0.15.0.5/rabbitvcs/lib/helper.py --- rabbitvcs-0.13.1/rabbitvcs/lib/helper.py 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/helper.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,714 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2006-2008 by Jason Field -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -""" - -All sorts of helper functions. - -""" - -from collections import deque -import locale -import os -import os.path -import sys -import subprocess -import re -import datetime -import time -import shutil - -import gobject - -import rabbitvcs.lib.settings - -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.lib.helper") - -from rabbitvcs import gettext -ngettext = gettext.ngettext - -DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S" # for log files -LOCAL_DATETIME_FORMAT = locale.nl_langinfo(locale.D_T_FMT) # for UIs - -LINE_BREAK_CHAR = u'\u23CE' - -def format_long_text(text, cols=None): - """ Nicely formats text containing linebreaks to display in a single line - by replacing newlines with U+23CE. If the param "cols" is given, the text - beyond cols is replaced by "...". - """ - text = text.strip().replace(u"\n", LINE_BREAK_CHAR) - if cols and len(text) > cols: - text = u"%s..." % text[0:cols] - - return text - -def in_rich_compare(item, list): - """ Tests whether the item is in the given list. This is mainly to work - around the rich-compare bug in pysvn. This is not identical to the "in" - operator when used for substring testing. - """ - - in_list = False - - if list is not None: - for thing in list: - try: - in_list = item == thing - except AttributeError, e: - pass - - return in_list - -# FIXME: this function is duplicated in settings.py -def get_home_folder(): - """ - Returns the location of the hidden folder we use in the home dir. - This is used for storing things like previous commit messages and - peviously used repositories. - - @rtype: string - @return: The location of our main user storage folder. - - """ - - # Make sure we adher to the freedesktop.org XDG Base Directory - # Specifications. $XDG_CONFIG_HOME if set, by default ~/.config - xdg_config_home = os.environ.get( - "XDG_CONFIG_HOME", - os.path.join(os.path.expanduser("~"), ".config") - ) - config_home = os.path.join(xdg_config_home, "rabbitvcs") - - # Make sure the directories are there - if not os.path.isdir(config_home): - # FIXME: what if somebody places a file in there? - os.makedirs(config_home, 0700) - - return config_home - -def get_user_path(): - """ - Returns the location of the user's home directory. - /home/$USER - - @rtype: string - @return: The location of the user's home directory. - - """ - - return os.path.abspath(os.path.expanduser("~")) - -def get_repository_paths_path(): - """ - Returns a valid URI for the repository paths file - - @rtype: string - @return: The location of the repository paths file. - - """ - return os.path.join(get_home_folder(), "repos_paths") - -def get_repository_paths(): - """ - Gets all previous repository paths stored in the user's home folder - - @rtype: list - @return: A list of previously used repository paths. - - """ - - returner = [] - paths_file = get_repository_paths_path() - if os.path.exists(paths_file): - returner = [x.strip() for x in open(paths_file, "r").readlines()] - - return returner - -def get_previous_messages_path(): - """ - Returns a valid URI for the previous messages file - - @rtype: string - @return: The location of the previous messages file. - - """ - - return os.path.join(get_home_folder(), "previous_log_messages") - -def get_previous_messages(): - """ - Gets all previous messages stored in the user's home folder - - @rtype: list - @return: A list of previous used messages. - - """ - - path = get_previous_messages_path() - if not os.path.exists(path): - return - - lines = open(path, "r").readlines() - - cur_entry = "" - returner = [] - date = None - msg = "" - regex = re.compile(r"-- ([\d\-]+ [\d\:]+) --") - for line in lines: - m = regex.match(line) - if m: - cur_entry = m.groups()[0] - if date: - returner.append((date, msg.rstrip())) - msg = "" - date = cur_entry - else: - msg += line - - if date and msg: - returner.append((date, msg.rstrip())) - - returner.reverse() - - return returner - -def encode_revisions(revision_array): - """ - Takes a list of integer revision numbers and converts to a TortoiseSVN-like - format. This means we have to determine what numbers are consecutives and - collapse them into a single element (see doctest below for an example). - - @type revision_array: list of integers - @param revision_array: A list of revision numbers. - - @rtype: string - @return A string of revision numbers in TortoiseSVN-like format. - - >>> encode_revisions([4,5,7,9,10,11,12]) - '4-5,7,9-12' - - >>> encode_revisions([]) - '' - - >>> encode_revisions([1]) - '1' - """ - - # Let's get a couple of cases out of the way - if len(revision_array) == 0: - return "" - - if len(revision_array) == 1: - return str(revision_array[0]) - - # Instead of repeating a set of statements we'll just define them as an - # inner function. - def append(start, last, list): - if start == last: - result = "%s" % start - else: - result = "%s-%s" % (start, last) - - list.append(result) - - # We need a couple of variables outside of the loop - start = revision_array[0] - last = revision_array[0] - current_position = 0 - returner = [] - - while True: - if current_position + 1 >= len(revision_array): - append(start, last, returner) - break; - - current = revision_array[current_position] - next = revision_array[current_position + 1] - - if not current + 1 == next: - append(start, last, returner) - start = next - last = next - - last = next - current_position += 1 - - return ",".join(returner) - -def decode_revisions(string, head): - """ - Takes a TortoiseSVN-like revision string and returns a list of integers. - EX. 4-5,7,9-12 -> [4,5,7,9,10,11,12] - - TODO: This function is a first draft. It may not be production-worthy. - """ - returner = [] - arr = string.split(",") - for el in arr: - if el.find("-") != -1: - subarr = el.split("-") - if subarr[1] == 'HEAD': - subarr[1] = head - for subel in range(int(subarr[0]), int(subarr[1])+1): - returner.append(subel) - else: - returner.append(int(el)) - - return returner - -def get_diff_tool(): - """ - Gets the path to the diff_tool, and whether or not to swap lhs/rhs. - - @rtype: dictionary - @return: A dictionary with the diff tool path and swap boolean value. - """ - - sm = rabbitvcs.lib.settings.SettingsManager() - diff_tool = sm.get("external", "diff_tool") - diff_tool_swap = sm.get("external", "diff_tool_swap") - - return { - "path": diff_tool, - "swap": diff_tool_swap - } - -def launch_diff_tool(path1, path2=None): - """ - Launches the diff tool of choice. - - 1. Generate a standard diff between the path and the latest revision. - 2. Write the diff text to a tmp file - 3. Copy the given file (path) to the tmp directory - 4. Do a reverse patch to get a version of the file that is in the repo. - 5. Now you have two files and you can send them to the diff tool. - - @type paths: list - @param paths: Paths to the given files - - """ - - diff = get_diff_tool() - - if diff["path"] == "": - return - - if not os.path.exists(diff["path"]): - return - - # If path2 is set, that means we are comparing one file/folder to another - if path2 is not None: - (lhs, rhs) = (path1, path2) - else: - patch = os.popen("svn diff --diff-cmd 'diff' '%s'" % path1).read() - open("/tmp/tmp.patch", "w").write(patch) - - tmp_path = "/tmp/%s" % os.path.split(path1)[-1] - shutil.copy(path1, "/tmp") - os.popen( - "patch --reverse '%s' < /tmp/tmp.patch" % - tmp_path - ) - (lhs, rhs) = (tmp_path, path1) - - if diff["swap"]: - (lhs, rhs) = (rhs, lhs) - - os.spawnl( - os.P_NOWAIT, - diff["path"], - diff["path"], - lhs, - rhs - ) - -def get_file_extension(path): - """ - Wrapper that retrieves a file path's extension. - - @type path: string - @param path: A filename or path. - - @rtype: string - @return: A file extension. - - """ - return os.path.splitext(path)[1] - -def open_item(path): - """ - Use GNOME default opener to handle file opening. - - @type path: string - @param path: A file path. - - """ - - if path == "" or path is None: - return - - subprocess.Popen(["gnome-open", os.path.abspath(path)]) - -def browse_to_item(path): - """ - Browse to the specified path in the file manager - - @type path: string - @param path: A file path. - - """ - - subprocess.Popen([ - "nautilus", "--no-desktop", "--browser", - os.path.dirname(os.path.abspath(path)) - ]) - -def delete_item(path): - """ - Send an item to the trash. - - @type path: string - @param path: A file path. - """ - - abspath = os.path.abspath(path) - - try: - # If the gvfs-trash program is not found, an OSError exception will - # be thrown, and rm will be used instead - subprocess.Popen(["gvfs-trash", abspath]).pid - except OSError: - if os.path.isdir(abspath): - shutil.rmtree(abspath, True) - else: - os.remove(abspath) - -def save_log_message(message): - """ - Saves a log message to the user's home folder for later usage - - @type message: string - @param message: A log message. - - """ - - messages = [] - path = get_previous_messages_path() - if os.path.exists(path): - limit = get_log_messages_limit() - messages = get_previous_messages() - - # If the current message already exists, delete the old one - # The new one will take it's place at the top - tmp = [] - for i, m in enumerate(messages): - if message != m[1]: - tmp.append(m) - - messages = tmp - - # Don't allow the number of messages to pile up past the limit - while len(messages) > limit: - messages.pop() - - t = time.strftime(DATETIME_FORMAT) - messages.insert(0, (t, message)) - - f = open(get_previous_messages_path(), "w") - s = "" - for m in messages: - s = """\ --- %s -- -%s -%s -"""%(m[0], m[1], s) - - f.write(s.encode("utf-8")) - f.close() - -def save_repository_path(path): - """ - Saves a repository path to the user's home folder for later usage - If the given path has already been saved, remove the old one from the list - and append the new one to the end. - - @type path: string - @param path: A repository path. - - """ - - paths = get_repository_paths() - if path in paths: - paths.pop(paths.index(path)) - paths.insert(0, path) - - limit = get_repository_paths_limit() - while len(paths) > limit: - paths.pop() - - f = open(get_repository_paths_path(), "w") - f.write("\n".join(paths).encode("utf-8")) - f.close() - -def launch_ui_window(filename, args=[]): - """ - Launches a UI window in a new process, so that we don't have to worry about - nautilus and threading. - - @type filename: string - @param filename: The filename of the window, without the extension - - @type args: list - @param args: A list of arguments to be passed to the window. - - @rtype: integer - @return: The pid of the process (if launched) - """ - - # Hackish. Get's the helper module's path, then assumes it is in - # the lib folder. Removes the /lib part of the path. - basedir, head = os.path.split( - os.path.dirname( - os.path.realpath(__file__))) - - if not head == "lib": - log.warning("Helper module (%s) not in \"lib\" dir" % __file__) - - # Puts the whole path together. - # path = "%s/ui/%s.py" % (basedir, filename) - path = os.path.join(basedir, "ui", filename + ".py") - - if os.path.exists(path): - proc = subprocess.Popen([sys.executable, path] + args) - return proc - else: - return None - -def get_log_messages_limit(): - sm = rabbitvcs.lib.settings.SettingsManager() - return int(sm.get("cache", "number_messages")) - -def get_repository_paths_limit(): - sm = rabbitvcs.lib.settings.SettingsManager() - return int(sm.get("cache", "number_repositories")) - -def get_common_directory(paths): - common = os.path.commonprefix(abspaths(paths)) - - while not os.path.exists(common) or os.path.isfile(common): - common = os.path.split(common)[0] - - if common == "": - break - - return common - -def abspaths(paths): - index = 0 - for path in paths: - paths[index] = os.path.realpath(os.path.abspath(path)) - index += 1 - - return paths - -def pretty_timedelta(time1, time2, resolution=None): - """ - Calculate time delta between two C{datetime} objects. - (the result is somewhat imprecise, only use for prettyprinting). - - Was originally based on the function pretty_timedelta from: - http://trac.edgewall.org/browser/trunk/trac/util/datefmt.py - """ - - if time1 > time2: - time2, time1 = time1, time2 - diff = time2 - time1 - age_s = int(diff.days * 86400 + diff.seconds) - if resolution and age_s < resolution: - return "" - - # I do not see a way to make this less repetitive - to make the - # strings fully translatable (i.e. also for languages that have more - # or less than two plural forms) we have to state all the strings - # explicitely within an ngettext call - if age_s <= 60 * 1.9: - return ngettext("%i second", "%i seconds",age_s) % age_s - elif age_s <= 3600 * 1.9: - r = age_s / 60 - return ngettext("%i minute", "%i minutes",r) % r - elif age_s <= 3600 * 24 * 1.9: - r = age_s / 3600 - return ngettext("%i hour", "%i hours",r) % r - elif age_s <= 3600 * 24 * 7 * 1.9: - r = age_s / (3600 * 24) - return ngettext("%i day", "%i days",r) % r - elif age_s <= 3600 * 24 * 30 * 1.9: - r = age_s / (3600 * 24 * 7) - return ngettext("%i week", "%i weeks",r) % r - elif age_s <= 3600 * 24 * 365 * 1.9: - r = age_s / (3600 * 24 * 30) - return ngettext("%i month", "%i months",r) % r - else: - r = age_s / (3600 * 24 * 365) - return ngettext("%i year", "%i years",r) % r - -def _commonpath(l1, l2, common=[]): - """ - Helper method for the get_relative_path method - """ - if len(l1) < 1: return (common, l1, l2) - if len(l2) < 1: return (common, l1, l2) - if l1[0] != l2[0]: return (common, l1, l2) - return _commonpath(l1[1:], l2[1:], common+[l1[0]]) - -def get_relative_path(p1, p2): - """ - Method that returns the relative path between the specified paths - """ - (common,l1,l2) = _commonpath(p1.split(os.path.sep), p2.split(os.path.sep)) - p = [] - if len(l1) > 0: - p = [ '../' * len(l1) ] - p = p + l2 - - return os.sep.join(p) - -def launch_repo_browser(uri): - sm = rabbitvcs.lib.settings.SettingsManager() - repo_browser = sm.get("external", "repo_browser") - - if repo_browser is not None: - subprocess.Popen([ - repo_browser, - uri - ]) - -def launch_url_in_webbrowser(url): - import webbrowser - webbrowser.open(url) - -def parse_path_revision_string(pathrev): - index = pathrev.rfind("@") - if index == -1: - return (pathrev,None) - else: - return (pathrev[0:index], pathrev[index+1:]) - -def create_path_revision_string(path, revision=None): - if revision: - return path + "@" + str(revision) - else: - return path - -def url_join(path, *args): - return "/".join([path.rstrip("/")] + list(args)) - -def pretty_filesize(bytes): - if bytes >= 1073741824: - return str(bytes / 1073741824) + ' GB' - elif bytes >= 1048576: - return str(bytes / 1048576) + ' MB' - elif bytes >= 1024: - return str(bytes / 1024) + ' KB' - elif bytes < 1024: - return str(bytes) + ' bytes' - -def get_node_kind(path): - if os.path.exists(path): - if os.path.isfile(path): - return "file" - else: - return "dir" - - return "none" - -def walk_tree_depth_first(tree, show_levels=False, - preprocess=None, filter=None, start=None): - """ - A non-recursive generator function that walks through a tree (and all - children) yielding results. - - The tree should be of the form: - [(NodeOne, None), - (NodeTwo, - [(Node2A, None), - (Node2B, None), - (Node2C, - [(Node2C1, None), etc] - ] - (NodeThree, None), - etc...] - - If show_levels is True, the values returned are (level, value) where level - is zero for the top level items in the tree. Otherwise, just "value" is - returned. - - If a callable "preprocess" is supplied, it is applied BEFORE the filter, - as each element is encountered. - - If a callable "filter" is supplied, it is applied to whatever "preprocess" - returned, and if it returns False for an item, the item and its children - will be skipped. - - If "start" is given, the walk will be applied only to that node and its - children. No preprocessing or filtering will be applied to other elements. - """ - annotated_tree = [(0, element) for element in tree] - - to_process = deque(annotated_tree) - - # If we're not given a starting point, the top is the start - found_starting_point = not start - - while to_process: - (level, (node, children)) = to_process.popleft() - - if not found_starting_point and (node == start): - # If we're given a starting point and we've found it, clear the list - # and start from here - found_starting_point = True - level = 0 - to_process.clear() - - # This should NOT be an else case, since we may have just set this flag - # to "True" above. - if found_starting_point: - if preprocess: - value = preprocess(node) - else: - value = node - - if filter and not filter(value): - continue - - if show_levels: - yield (level, value) - else: - yield value - - if children: - annotated_children = [(level+1, child) for child in children] - annotated_children.reverse() - to_process.extendleft(annotated_children) diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/lib/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/lib/__init__.py 2009-09-28 11:25:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/__init__.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2006-2008 by Jason Field -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -from rabbitvcs.lib.log import Log - -log = Log("rabbitvcs.lib.__init__") - -class Function: - """ - Provides an interface to define and call a function. - - Usage: - f = Function(self.do_this, path) - f.run() - - """ - - def __init__(self, func, *args, **kwargs): - self.func = func - self.args = args - self.kwargs = kwargs - self.result = None - - def start(self): - self.result = self.func(*self.args, **self.kwargs) - - def call(self): - return self.func(*self.args, **self.kwargs) - - def set_args(self, *args, **kwargs): - self.args = args - self.kwargs = kwargs - - def get_result(self): - return self.result - -class FunctionQueue: - """ - Provides an interface to generate a queue of function calls. - - """ - - def __init__(self): - self.queue = [] - self.cancel = False - self._exception = None - - def cancel_queue(self): - self.cancel = True - - def append(self, func, *args, **kwargs): - """ - Append a Function object to the FunctionQueue - - @type func: def - @param func: A method call - - @type *args: list - @param *args: A list of arguments - - @type **kwargs: list - @param **kwargs: A list of keyword arguments - - """ - - self.queue.append(Function(func, *args, **kwargs)) - - def set_exception_callback(self, func): - self._exception = Function(func) - - def start(self): - """ - Runs through the queue and calls each function - - """ - - for func in self.queue: - if self.cancel == True: - return - - try: - func.start() - except Exception, e: - log.exception() - if self._exception: - self._exception.set_args(e) - self._exception.call() - break - - def get_result(self, index): - """ - Retrieve the result of a single function call by specifying the order - in which the function was in the queue. - - @type index: int - @param index: The queue index - - """ - - return self.queue[index].get_result() diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/log.py rabbitvcs-0.15.0.5/rabbitvcs/lib/log.py --- rabbitvcs-0.13.1/rabbitvcs/lib/log.py 2009-12-21 12:26:39.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/log.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,330 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2006-2008 by Jason Field -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -""" -Provides a simple wrapper around the python logger. - -Right now there is the base Log class, and three specialized classes that -inherit from the Log class: ConsoleLog, FileLog, and DualLog. ConsoleLog logs -messages to the standard output (command line), FileLog outputs to a log file, -and DualLog outputs to both. - -The programmer does not need to think about the logger types because this will -be specified in the user's settings. So to set up your module to log do the -following: - -Usage: - from rabbitvcs.lib.log import Log - - log = Log("my.module") - log.debug("a debug message") - -""" - -import os -from os.path import expanduser -import logging -import logging.handlers - -from rabbitvcs.lib.settings import SettingsManager, get_home_folder - -LEVELS = { - "debug": logging.DEBUG, - "info": logging.INFO, - "warning": logging.WARNING, - "error": logging.ERROR, - "critical": logging.CRITICAL -} - -settings = SettingsManager() -DEFAULT_LEVEL = settings.get("logging", "level").lower() -DEFAULT_LOG_TYPE = settings.get("logging", "type") - -# The following merely sets the log type/level if it hasn't already been set -changed = False -if DEFAULT_LEVEL not in LEVELS: - DEFAULT_LEVEL = "debug" - settings.set("logging", "level", DEFAULT_LEVEL.title()) - changed = True - -if not DEFAULT_LOG_TYPE: - DEFAULT_LOG_TYPE = "Console" - settings.set("logging", "type", DEFAULT_LOG_TYPE) - changed = True - -if changed: - settings.write() - -LOG_PATH = os.path.join(get_home_folder(), "RabbitVCS.log") -if not os.path.exists(LOG_PATH): open(LOG_PATH, "a").close() -DEFAULT_FORMAT = "%(message)s" -FILE_FORMAT = "%(asctime)s %(levelname)s\t%(name)s\t%(message)s" -CONSOLE_FORMAT = "%(levelname)s\t%(name)s\t%(message)s" - -class BaseLog: - """ - Provides a wrapper around the logging module to simplify some logging tasks. - This base class should generally not be called. - - """ - - def __init__(self, logger="", level=DEFAULT_LEVEL): - self.logger = logging.getLogger(logger) - self.level = level - self.logger.setLevel(LEVELS[level]) - self.handler = None - - def set_level(self, level=DEFAULT_LEVEL): - """ - Set the mimimum level to be logged. - - @type level: string - @param level: The minimum level to log. (debug, info, warning, error, critical) - - """ - - self.level = level - self.logger.setLevel(LEVELS[level]) - - def debug(self, msg=""): - """ - Pass a debug level log message (Numeric value: 10) - - @type msg: string - @param msg: The message to pass - - """ - - self.logger.debug(msg) - - def info(self, msg=""): - """ - Pass an info level log message (Numeric value: 20) - - @type msg: string - @param msg: The message to pass - - """ - - self.logger.info(msg) - - def warning(self, msg=""): - """ - Pass a warning level log message (Numeric value: 30) - - @type msg: string - @param msg: The message to pass - - """ - - self.logger.warning(msg) - - def error(self, msg=""): - """ - Pass an error level log message (Numeric value: 40) - - @type msg: string - @param msg: The message to pass - - """ - - self.logger.error(msg) - - def critical(self, msg=""): - """ - Pass a critical level log message (Numeric value: 50) - - @type msg: string - @param msg: The message to pass - - """ - - self.logger.critical(msg) - - def exception(self, msg=""): - """ - Pass a exception level log message (Numeric value: 50) - - @type msg: string - @param msg: The message to pass - - """ - - self.logger.exception(msg) - - def exception_info(self, msg, exc_info): - """ - Pass an exception info tuple (as per sys.exc_info() format, (type, - value, traceback). - - @type exc_info: (type, value, traceback) - @param exc_info: exception info - """ - self.logger.debug(msg, exc_info=exc_info) - - def set_handler(self, handler, format=DEFAULT_FORMAT): - """ - Set how the logging module should handle log messages. - - @type handler: logging.Handler - @param handler: The class that handles log messages - - @type format: string - @param format: The formatting to be used when displaying messages - - """ - - self.handler = handler - self.handler.setLevel(LEVELS[self.level]) - self.handler.setFormatter(logging.Formatter(format)) - self.logger.addHandler(self.handler) - -class ConsoleLog(BaseLog): - """ - Inherits from BaseLog and provides a simple interface to log calls to the - command line/standard output. - - Usage: - clog = ConsoleLog("rabbitvcs.ui.commit") - clog.debug("This function needs refactoring") - clog.error("You just screwed the pooch!") - - """ - - def __init__(self, logger="", level=DEFAULT_LEVEL): - """ - @type logger: string - @param logger: A keyword describing the source of the log messages - - @type level: string - @param level: The minimum level to log. (debug, info, warning, error, critical) - - """ - - BaseLog.__init__(self, logger, level) - self.set_handler(logging.StreamHandler(), CONSOLE_FORMAT) - -class FileLog(BaseLog): - """ - Inherits from BaseLog and provides a simple interface to log calls to file - which is automatically rotated every day and keeps seven days worth of data. - - Usage: - flog = FileLog("rabbitvcs.ui.commit") - flog.debug("This function needs refactoring") - flog.error("You just screwed the pooch!") - - """ - - def __init__(self, logger="", level=DEFAULT_LEVEL): - """ - @type logger: string - @param logger: A keyword describing the source of the log messages - - @type level: string - @param level: The minimum level to log. (debug, info, warning, error, critical) - - """ - - BaseLog.__init__(self, logger, level) - self.set_handler( - logging.handlers.TimedRotatingFileHandler(LOG_PATH, "D", 1, 7, "utf-8"), - FILE_FORMAT - ) - -class DualLog(BaseLog): - """ - Inherits from BaseLog and provides a simple interface to log calls to both the - command line/standard output and a file which is automatically rotated every - day. - - Usage: - dlog = DualLog("rabbitvcs.ui.commit") - dlog.debug("This function needs refactoring") - dlog.error("You just screwed the pooch!") - - """ - - def __init__(self, logger="", level=DEFAULT_LEVEL): - """ - @type logger: string - @param logger: A keyword describing the source of the log messages - - @type level: string - @param level: The minimum level to log. (debug, info, warning, error, critical) - - """ - - BaseLog.__init__(self, logger, level) - self.set_handler( - logging.handlers.TimedRotatingFileHandler(LOG_PATH, "D", 1, 7, "utf-8"), - FILE_FORMAT - ) - self.set_handler(logging.StreamHandler(), CONSOLE_FORMAT) - -class NullHandler(logging.Handler): - """ - Handles log messages and doesn't do anything with them - - """ - - def emit(self, record): - pass - -class NullLog(BaseLog): - """ - If the user does not want to generate a log file, use the NullLog. It calls - the NullHandler class as its handler. - - """ - - def __init__(self, *args, **kwargs): - BaseLog.__init__(self, *args, **kwargs) - self.set_handler(NullHandler()) - -Log = NullLog -if DEFAULT_LOG_TYPE == "File": - Log = FileLog -elif DEFAULT_LOG_TYPE == "Console": - Log = ConsoleLog -elif DEFAULT_LOG_TYPE == "Both": - Log = DualLog - -def reload_log_settings(): - """ - Refreshes the settings manager and returns a new log instance - - """ - - settings = SettingsManager() - DEFAULT_LEVEL = settings.get("logging", "level").lower() - DEFAULT_LOG_TYPE = settings.get("logging", "type") - - Log = NullLog - if DEFAULT_LOG_TYPE == "File": - Log = FileLog - elif DEFAULT_LOG_TYPE == "Console": - Log = ConsoleLog - elif DEFAULT_LOG_TYPE == "Both": - Log = DualLog - - return Log diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/settings.py rabbitvcs-0.15.0.5/rabbitvcs/lib/settings.py --- rabbitvcs-0.13.1/rabbitvcs/lib/settings.py 2009-09-28 11:25:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/settings.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,302 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2006-2008 by Jason Field -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -""" - -Everything related retrieving and storing configuration keys. - -""" - -import os -from os.path import dirname - -import shutil -import configobj -import validate - -def get_home_folder(): - """ - Returns the location of the hidden folder we use in the home dir. - This is used for storing things like previous commit messages and - previously used repositories. - - FIXME: This is a copy of the helper module's function, because I can't - have a circular module reference (helper imports Settings right now). - - @rtype: string - @return: The location of our main user storage folder. - - """ - - # Make sure we adher to the freedesktop.org XDG Base Directory - # Specifications. $XDG_CONFIG_HOME if set, by default ~/.config - xdg_config_home = os.environ.get( - "XDG_CONFIG_HOME", - os.path.join(os.path.expanduser("~"), ".config") - ) - config_home = os.path.join(xdg_config_home, "rabbitvcs") - - # Make sure the directories are there - if not os.path.isdir(config_home): - # FIXME: what if somebody places a file in there? - os.makedirs(config_home, 0700) - - return config_home - -SETTINGS_FILE = "%s/settings.conf" % get_home_folder() - -def find_configspec(): - # FIXME: this needs to be modified once configspec.ini is placed in the data folder - configspec = os.path.join(dirname(__file__), "configspec/configspec.ini") - if os.path.exists(configspec): - return configspec - elif os.path.exists("/usr/share/rabbitvcs/configspec.ini"): - return "/usr/share/rabbitvcs/configspec.ini" - else: - # FIXME: what if we can't find anything? - return None - -SETTINGS_SPEC = find_configspec() - -class SettingsManager: - """ - This class provides an shallow interface for the rest of the program to use - to interact with our configuration file. - - Usage:: - - Get settings: - sm = SettingsManager() - diff_tool = sm.get("external", "diff_tool") - - Set settings: - sm = SettingsManager() - sm.set("external", "diff_tool", "/usr/bin/meld") - sm.write() - """ - - def __init__(self): - - self.settings = configobj.ConfigObj( - infile=SETTINGS_FILE, - create_empty=True, - indent_type=" ", - configspec=SETTINGS_SPEC - ) - - self.validator = validate.Validator() - - valid = self.settings.validate(self.validator) - - # We cannot use "if not valid" here, since validate() returns a dict - # if validation fails! - # See: - # http://www.voidspace.org.uk/python/articles/configobj.shtml#validation - if valid is not True: - # What to do here? - # We could only get to this point if: - # 1. The user config file existed - # 2. It was invalid - # One option is to copy it to a different file and recreate it... - log.warning("User configuration not valid. Backing up and recreating.") - self.backup_and_rewrite_config() - - - def get(self, section=None, keyword=None): - """ - Get the settings for a section and/or keyword - If no arguments are given, it just returns all settings - - @type section: string - @param section: A settings section. - - @type keyword: string - @param keyword: A particular setting in a section. - - @rtype: dictionary or string - @return: Either a dictionary or string with setting(s). - - """ - - if section is None: - return self.settings - - if keyword is None: - return self.settings[section] - - returner = "" - try: - returner = self.settings[section][keyword] - except KeyError: - print "Error: section %s:%s doesn't exist" % (section, keyword) - - return returner - - def set(self, section, keyword, value=""): - """ - Set settings for a particular section and keyword - - @type section: string - @param section: A settings section. - - @type keyword: string - @param keyword: A particular setting in a section. - - @type value: string or dictionary - @param value: Setting value. - - """ - - if section not in self.settings: - self.settings[section] = {} - - self.settings[section][keyword] = value - - def set_comments(self, section, comments=[]): - """ - Set multi-line comments for a section - - @type section: string - @param section: A settings section. - - @type comments: list - @param comments: A list of strings. - - """ - - self.settings.comments[section] = comments - - def set_inline_comments(self, section, comments=""): - """ - Set inline comments for a section - - @type section: string - @param section: A settings section. - - @type comments: string - @param comments: A single line comment. - - """ - - self.settings.inline_comments[section] = comments - - def write(self): - """ - Write the settings and comments to the settings file - - """ - - self.settings.write() - - def clear(self): - """ - Clear the settings object so that all sections/keywords are gone - This function does not write-to-file. Only clears from memory. - - """ - self.settings = configobj.ConfigObj(indent_type=" ") - self.settings.filename = SETTINGS_FILE - # Maybe we should use self.settings.reset()? - - def use_default_settings(self): - """ - Specify a set of default settings and write to file. - Called when there is no settings.conf present. - - """ - - self.settings = configobj.ConfigObj( - DEFAULT_SETTINGS, - indent_type=" " - ) - self.settings.filename = SETTINGS_FILE - - def get_default(self, section, keyword): - """ - Get the default settings for a section and/or keyword - If no arguments are given, it just returns all settings - - @type section: string - @param section: A settings section. - - @type keyword: string - @param keyword: A particular setting in a section. - - @rtype: dictionary or string - @return: Either a dictionary or string with setting(s). - - """ - - if section is None: - return DEFAULT_SETTINGS - - if keyword is None: - return DEFAULT_SETTINGS[section] - - returner = None - try: - returner = DEFAULT_SETTINGS[section][keyword] - except KeyError: - print "Error: section %s:%s doesn't exist" % (section, keyword) - - return returner - - def backup_and_rewrite_config(self) : - """ - Backs up the user configuration file (for debugging) and rewrites a - valid config file. - - The name of the backup file is the name of the settings file plus an - incremental count. - - """ - # We need to check that the file doesn't already exist, in case this has - # happened before. - new_file_free = False - renumber = 0 - - while not new_file_free: - new_name = "%s.%02i" % (SETTINGS_FILE, renumber) - - # FIXME: is this too paranoid? - if not os.path.exists(new_name): - - new_file_free = True - - created = False - - try: - os.rename(SETTINGS_FILE, new_name) - created = True - except IOError: - # Paranoid again? - print "Could not back up user configuration." - - if created: - self.settings.reset() - self.write() - else: - renumber += 1 - - -if __name__ == "__main__": - pass diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/vcs/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/lib/vcs/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/lib/vcs/__init__.py 2009-09-28 11:25:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/vcs/__init__.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2006-2008 by Jason Field -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -from rabbitvcs.lib.vcs.svn import SVN -from rabbitvcs.lib.decorators import deprecated - -from rabbitvcs import gettext -_ = gettext.gettext - -EXT_UTIL_ERROR = _("The output from '%s' was not able to be processed.\n%s") - - -class VCS: - pass - -class VCSFactory: - - @deprecated - def create_vcs_instance(self): - """ - @deprecated: Use create_vcs_instance() instead. - """ - - return SVN() - -def create_vcs_instance(): - """ - - """ - # TODO: we'll figure this out later by looking at the working copy. - return SVN() - -class ExternalUtilError(Exception): - """ Represents an error caused by unexpected output from an external - program. - """ - - def __init__(self, program, output): - """ Initialises the error with the external tool and the unexpected - output. - """ - Exception.__init__(self, - EXT_UTIL_ERROR % (program, output)) - self.program = program - self.output = output diff -Nru rabbitvcs-0.13.1/rabbitvcs/lib/vcs/svn/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/lib/vcs/svn/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/lib/vcs/svn/__init__.py 2010-03-27 08:58:11.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/lib/vcs/svn/__init__.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,1820 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2006-2008 by Jason Field -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -""" -Concrete VCS implementation for Subversion functionality. -""" - -import traceback -import subprocess -import re -import os.path -from os.path import isdir, isfile, dirname - -import pysvn - -import rabbitvcs.lib.vcs -from rabbitvcs.lib.helper import abspaths -from rabbitvcs.lib.decorators import timeit -from rabbitvcs.lib.log import Log - -log = Log("rabbitvcs.lib.vcs.svn") - -from rabbitvcs import gettext -_ = gettext.gettext - -PATCHING_RE = re.compile(r"patching file (.*)") -REJECT_RE = re.compile(r".*saving rejects to file (.*)") - -# Extra "action" for "commit completed" -commit_completed = "commit_completed" - -def parse_patch_output(patch_file, base_dir): - """ Runs the GNU 'patch' utility, parsing the output. This is actually a - generator which yields values as each section of the patch is applied. - - @param patch_file: the location of the patch file - @type patch_file: string - - @param base_dir: the directory in which to apply the patch - @type base_dir: string - - @return: a generator yielding tuples (filename, success, reject_file). - "filename" is never None, and should always exist. "success" is - True iff the patch executed without any error messages. - "reject_file" may be None, but if it exists is the location of - rejected "hunks". It's like a bad reality TV dating show. - """ - - # PATCH flags... - # -N: always assume forward diff - # -t: batch mode: - # skip patches whose headers do not contain file - # names (the same as -f); skip patches for which - # the file has the wrong version for the Prereq: - # line in the patch; and assume that patches are - # reversed if they look like they are. - env = os.environ.copy().update({"LC_ALL" : "C"}) - patch_proc = subprocess.Popen(["patch", "-N", "-t", "-p0", "-i", str(patch_file), "--directory", base_dir], - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - env = env) - - # Intialise things... - line = patch_proc.stdout.readline() - patch_match = PATCHING_RE.match(line) - - if patch_match: - current_file = patch_match.group(1) - elif line: # and not patch_match - # There was output, but unexpected. Almost certainly an error of some - # sort. - patch_proc.wait() - output = line + patch_proc.stdout.read() - raise rabbitvcs.lib.vcs.ExternalUtilError("patch", output) - # Note the excluded case: empty line. This falls through, skips the loop - # and returns. - - any_errors = False - reject_file = None - - while current_file: - - line = patch_proc.stdout.readline() - while not line and patch_proc.poll() is None: - line = patch_proc.stdout.readline() - - # Does patch tell us we're starting a new file? - patch_match = PATCHING_RE.match(line) - - # Starting a new file => that's it for the last one, so return the value - # No line => End of patch output => ditto - if patch_match or not line: - - yield (current_file, not any_errors, reject_file) - - if not line: - # That's it from patch, so end the generator - break - - # Starting a new file... - current_file = patch_match.group(1) - any_errors = False - reject_file = None - - else: - # Doesn't matter why we're here, anything else means ERROR - - any_errors = True - - reject_match = REJECT_RE.match(line) - - if reject_match: - # Have current file, getting reject file info - reject_file = reject_match.group(1) - # else: we have an unknown error - - patch_proc.wait() # Don't leave process running... - return - -class Revision: - """ - Implements a simple revision object as a wrapper around the pysvn revision - object. This allows us to provide a standard interface to the object data. - """ - - KINDS = { - "unspecified": pysvn.opt_revision_kind.unspecified, - "number": pysvn.opt_revision_kind.number, - "date": pysvn.opt_revision_kind.date, - "committed": pysvn.opt_revision_kind.committed, - "previous": pysvn.opt_revision_kind.previous, - "working": pysvn.opt_revision_kind.working, - "head": pysvn.opt_revision_kind.head, - "base": pysvn.opt_revision_kind.base - } - - def __init__(self, kind, value=None): - self.kind = kind.lower() - self.value = value - self.is_revision_object = True - - self.__revision_kind = self.KINDS[self.kind] - self.__revision = None - try: - if value is not None: - self.__revision = pysvn.Revision(self.__revision_kind, value) - else: - self.__revision = pysvn.Revision(self.__revision_kind) - except Exception, e: - log.exception(e) - - def __unicode__(self): - if self.value: - return "r" + unicode(self.value) - else: - return self.kind - - def __str__(self): - return self.__unicode__() - - def __repr__(self): - return self.__unicode__() - - def primitive(self): - return self.__revision - -class SVN: - """ - - """ - - STATUS = { - "none" : pysvn.wc_status_kind.none, - "unversioned" : pysvn.wc_status_kind.unversioned, - "normal" : pysvn.wc_status_kind.normal, - "added" : pysvn.wc_status_kind.added, - "missing" : pysvn.wc_status_kind.missing, - "deleted" : pysvn.wc_status_kind.deleted, - "replaced" : pysvn.wc_status_kind.replaced, - "modified" : pysvn.wc_status_kind.modified, - "merged" : pysvn.wc_status_kind.merged, - "conflicted" : pysvn.wc_status_kind.conflicted, - "ignored" : pysvn.wc_status_kind.ignored, - "obstructed" : pysvn.wc_status_kind.obstructed, - "external" : pysvn.wc_status_kind.external, - "incomplete" : pysvn.wc_status_kind.incomplete - } - - STATUS_REVERSE = { - pysvn.wc_status_kind.none: "none", - pysvn.wc_status_kind.unversioned: "unversioned", - pysvn.wc_status_kind.normal: "normal", - pysvn.wc_status_kind.added: "added", - pysvn.wc_status_kind.missing: "missing", - pysvn.wc_status_kind.deleted: "deleted", - pysvn.wc_status_kind.replaced: "replaced", - pysvn.wc_status_kind.modified: "modified", - pysvn.wc_status_kind.merged: "merged", - pysvn.wc_status_kind.conflicted: "conflicted", - pysvn.wc_status_kind.ignored: "ignored", - pysvn.wc_status_kind.obstructed: "obstructed", - pysvn.wc_status_kind.external: "external", - pysvn.wc_status_kind.incomplete: "incomplete" - } - - STATUSES_FOR_COMMIT = [ - STATUS["unversioned"], - STATUS["added"], - STATUS["deleted"], - STATUS["replaced"], - STATUS["modified"], - STATUS["missing"], - STATUS["obstructed"] - ] - - STATUSES_FOR_REVERT = [ - STATUS["missing"], - STATUS["added"], - STATUS["modified"], - STATUS["deleted"] - ] - - PROPERTIES = { - "executable": "svn:executable", - "mime-type": "svn:mime-type", - "ignore": "svn:ignore", - "keywords": "svn:keywords", - "eol-style": "svn:eol-style", - "externals": "svn:externals", - "special": "svn:special" - } - - NOTIFY_ACTIONS = { - pysvn.wc_notify_action.add: _("Added"), - pysvn.wc_notify_action.copy: _("Copied"), - pysvn.wc_notify_action.delete: _("Deleted"), - pysvn.wc_notify_action.restore: _("Restored"), - pysvn.wc_notify_action.revert: _("Reverted"), - pysvn.wc_notify_action.failed_revert: _("Failed Revert"), - pysvn.wc_notify_action.resolved: _("Resolved"), - pysvn.wc_notify_action.skip: _("Skipped"), - pysvn.wc_notify_action.update_delete: _("Deleted"), - pysvn.wc_notify_action.update_add: _("Added"), - pysvn.wc_notify_action.update_update: _("Updated"), - pysvn.wc_notify_action.update_completed: _("Completed"), - pysvn.wc_notify_action.update_external: _("External"), - pysvn.wc_notify_action.status_completed: _("Completed"), - pysvn.wc_notify_action.status_external: _("External"), - pysvn.wc_notify_action.commit_modified: _("Modified"), - pysvn.wc_notify_action.commit_added: _("Added"), - pysvn.wc_notify_action.commit_deleted: _("Copied"), - pysvn.wc_notify_action.commit_replaced: _("Replaced"), - pysvn.wc_notify_action.commit_postfix_txdelta: _("Changed"), - pysvn.wc_notify_action.annotate_revision: _("Annotated"), - pysvn.wc_notify_action.locked: _("Locked"), - pysvn.wc_notify_action.unlocked: _("Unlocked"), - pysvn.wc_notify_action.failed_lock: _("Failed Lock"), - pysvn.wc_notify_action.failed_unlock: _("Failed Unlock") - } - - NOTIFY_ACTIONS_COMPLETE = [ - pysvn.wc_notify_action.status_completed, - pysvn.wc_notify_action.update_completed, - commit_completed - ] - - NOTIFY_STATES = { - pysvn.wc_notify_state.inapplicable: _("Inapplicable"), - pysvn.wc_notify_state.unknown: _("Unknown"), - pysvn.wc_notify_state.unchanged: _("Unchanged"), - pysvn.wc_notify_state.missing: _("Missing"), - pysvn.wc_notify_state.obstructed: _("Obstructed"), - pysvn.wc_notify_state.changed: _("Changed"), - pysvn.wc_notify_state.merged: _("Merged"), - pysvn.wc_notify_state.conflicted: _("Conflicted") - } - - DEPTHS_FOR_CHECKOUT = { - "Recursive": True, - "Not Recursive": False - } - - NODE_KINDS = { - "none": pysvn.node_kind.none, - "file": pysvn.node_kind.file, - "dir": pysvn.node_kind.dir, - "unknown": pysvn.node_kind.unknown - } - - NODE_KINDS_REVERSE = { - pysvn.node_kind.none: "none", - pysvn.node_kind.file: "file", - pysvn.node_kind.dir: "dir", - pysvn.node_kind.unknown: "unknown" - } - - #: This variable is used to maintain a status cache. Paths function as keys - #: and every item in the cache has all the statuses for all the items below - #: it, though the last item is always the status for the path. - #: - #: It might look like::: - #: - #: status_cache = { - #: "/foo/bar/baz": [] - #: "/foo/bar": [, , ] - #: "/foo": [, , ] - #: } - #: - #: It is shared over all instances. Don't ask me why though, I don't - #: understand how it works myself. - #: - status_cache = {} - - def __init__(self): - self.client = pysvn.Client() - self.interface = "pysvn" - - def status(self, path, recurse=True, update=False): - """ - - Look up the status for path. - - """ - - try: - return self.client.status(path, recurse=recurse, update=update) - except pysvn.ClientError: - # TODO: uncommenting these might not be a good idea - #~ traceback.print_exc() - #~ log.exception("Exception occured in SVN.status() for %s" % path) - return [pysvn.PysvnStatus({ - "text_status": pysvn.wc_status_kind.none, - "prop_status": pysvn.wc_status_kind.none, - "path": os.path.abspath(path) - })] - - #~ @timeit - def status_with_cache(self, path, invalidate=False, recurse=True): - """ - - Look up the status for path. - - If invalidate is set to False this function will look to see if a - status for the requested path is available in the cache and if so - return that. Otherwise it will bypass the cache entirely. - - @type path: string - @param path: A path pointing to an item (file or directory). - - @type invalidate: boolean - @param invalidate: Whether or not the cache should be bypassed. - - @type recurse: boolean - @param recurse: Should status recurse or not - - @rtype: list of PysvnStatus - @return: A list of statuses for the given path, with the status - for the path being the first item in the list. - - """ - - if (not invalidate and path in self.status_cache): - return self.status_cache[path] - - # The cache was bypassed or does not contain the requested path. - statuses = self.status(path, recurse=recurse) - - # Empty out all the caches - for status in statuses: - current_path = os.path.join(path, status.data["path"].encode("utf-8")) - while current_path != "/": - self.status_cache[current_path] = [] - current_path = os.path.split(current_path)[0] - - # Fill them back up - for status in statuses: - current_path = os.path.join(path, status.data["path"].encode("utf-8")) - while current_path != "/": - if current_path not in self.status_cache: break; - self.status_cache[current_path].append(status) - current_path = os.path.split(current_path)[0] - - return self.status_cache[path] - - # - # is - # - - def is_working_copy(self, path): - try: - # when a versioned directory is removed and replaced with a - # non-versioned directory (one that doesn't have a working copy - # administration area, or .svn directory) you can't do a status - # call on that item itself (results in an exception). - # - # Note that this is not a conflict, it's more of a corruption. - # And it's associated with the status "obstructed". The only - # way to make sure that we're dealing with a working copy - # is by verifying the SVN administration area exists. - if (isdir(path) and - self.client.info(path) and - isdir(os.path.join(path, ".svn"))): - return True - return False - except Exception, e: - # FIXME: ClientError client in use on another thread - #~ log.debug("EXCEPTION in is_working_copy(): %s" % str(e)) - return False - - def is_in_a_or_a_working_copy(self, path): - return self.is_working_copy(path) or self.is_working_copy(os.path.split(path)[0]) - - def is_versioned(self, path): - if self.is_working_copy(path): - return True - else: - # info will return nothing for an unversioned file inside a working copy - if (self.is_working_copy(os.path.split(path)[0]) and - self.client.info(path)): - return True - - return False - - def is_status(self, path, status_kind): - try: - status = self.status(path, recurse=False)[-1] - except Exception, e: - log.exception("is_status exception for %s" % path) - return False - - # If looking for "NORMAL", then both statuses must be normal (or propstatus=none) - # Otherwise, it is an either or situation - if status_kind == pysvn.wc_status_kind.normal: - return (status.data["text_status"] == status_kind - and (status.data["prop_status"] == status_kind - or status.data["prop_status"] == pysvn.wc_status_kind.none)) - else: - return (status.data["text_status"] == status_kind - or status.data["prop_status"] == status_kind) - - return False - - def is_normal(self, path): - return self.is_status(path, pysvn.wc_status_kind.normal) - - def is_added(self, path): - return self.is_status(path, pysvn.wc_status_kind.added) - - def is_modified(self, path): - return self.is_status(path, pysvn.wc_status_kind.modified) - - def is_deleted(self, path): - return self.is_status(path, pysvn.wc_status_kind.deleted) - - def is_ignored(self, path): - return self.is_status(path, pysvn.wc_status_kind.ignored) - - def is_locked(self, path): - is_locked = False - try: - is_locked = self.client.info2(path, recurse=False)[0][1].lock is not None - except pysvn.ClientError, e: - return False - #log.exception("is_locked exception for %s" % path) - - return is_locked - - def is_conflicted(self, path): - return self.is_status(path, pysvn.wc_status_kind.conflicted) - - def is_missing(self, path): - return self.is_status(path, pysvn.wc_status_kind.missing) - - def is_obstructed(self, path): - return self.is_status(path, pysvn.wc_status_kind.obstructed) - - # - # has - # - - def has_status(self, path, status_kind): - try: - statuses = self.status(path, recurse=True)[:-1] - except Exception, e: - log.exception("has_status exception for %s" % path) - return False - - for status in statuses: - # If looking for "NORMAL", then both statuses must be normal (or propstatus=none) - # Otherwise, it is an either or situation - if status_kind == pysvn.wc_status_kind.normal: - if (status.data["text_status"] == status_kind - and (status.data["prop_status"] == status_kind - or status.data["prop_status"] == pysvn.wc_status_kind.none)): - return True - else: - if (status.data["text_status"] == status_kind - or status.data["prop_status"] == status_kind): - return True - - return False - - def has_unversioned(self, path): - return self.has_status(path, pysvn.wc_status_kind.unversioned) - - def has_added(self, path): - return self.has_status(path, pysvn.wc_status_kind.added) - - def has_modified(self, path): - return self.has_status(path, pysvn.wc_status_kind.modified) - - def has_deleted(self, path): - return self.has_status(path, pysvn.wc_status_kind.deleted) - - def has_ignored(self, path): - return self.has_status(path, pysvn.wc_status_kind.ignored) - - def has_locked(self, path): - try: - infos = self.client.info2(path) - except: - #log.exception("has_locked exception for %s" % path) - return False - - for info in infos: - if info[1].lock is not None: - return True - - return False - - def has_conflicted(self, path): - return self.has_status(path, pysvn.wc_status_kind.conflicted) - - def has_missing(self, path): - return self.has_status(path, pysvn.wc_status_kind.missing) - - def has_obstructed(self, path): - return self.has_status(path, pysvn.wc_status_kind.obstructed) - - # - # provides information for ui - # - - def get_items(self, paths, statuses=[]): - """ - Retrieves a list of files that have one of a set of statuses - - @type paths: list - @param paths: A list of paths or files. - - @type statuses: list - @param statuses: A list of pysvn.wc_status_kind statuses. - - @rtype: list - @return: A list of PysvnStatus objects. - - """ - - if paths is None: - return [] - - items = [] - for path in abspaths(paths): - try: - st = self.status(path) - except Exception, e: - log.exception(e) - continue - - for st_item in st: - if statuses and st_item.text_status not in statuses \ - and st_item.prop_status not in statuses: - continue - - items.append(st_item) - - return items - - def get_remote_updates(self, paths): - if paths is None: - return [] - - items = [] - for path in abspaths(paths): - try: - st = self.client.status(path, update=True) - except Exception, e: - log.exception(e) - continue - - for st_item in st: - if st_item.repos_text_status == pysvn.wc_status_kind.none and \ - st_item.repos_prop_status == pysvn.wc_status_kind.none: - continue - - items.append(st_item) - - return items - - def get_repo_url(self, path): - """ - Retrieve the repository URL for the given working copy path - - @type path: string - @param path: A working copy path. - - @rtype: string - @return: A repository URL. - - """ - - # If the given path is a URL, the user is passing a repository url - # In that case we already have the url - if self.is_path_repository_url(path): - return path - - # If the given path is not part of a working copy, keep trying the - # parent path to see if it is part of a working copy - path = self.get_versioned_path(os.path.abspath(path)) - if not path: - return "" - - info = self.client.info(path) - returner = "" - try: - returner = info["url"] - except Exception, e: - log.exception(e) - - return returner - - def get_repo_root_url(self, path): - """ - Retrieve the repository URL for the given working copy path - FYI this method was not added until svn 1.6.x - - @type path: string - @param path: A working copy path. - - @rtype: string - @return: A repository URL. - - """ - - info = self.client.info2(path, recurse=False) - returner = "" - try: - returner = info[0][1]["repos_root_URL"] - except Exception, e: - log.exception(e) - - return returner - - def is_path_repository_url(self, path): - for proto in ("http://", "https://", "svn://", "svn+ssh://", "file://"): - if path.startswith(proto): - return True - - return False - - def get_revision(self, path): - """ - Retrieve the current revision number for a path - - @type path: string - @param path: A working copy path. - - @rtype: integer - @return: A repository revision. - - """ - - info = self.client.info(path) - - returner = None - try: - returner = info["commit_revision"].number - except KeyError, e: - log.exception("KeyError exception in svn.py get_revision() for %s" % path) - except AttributeError, e: - log.exception("AttributeError exception in svn.py get_revision() for %s" % path) - - return returner - - def get_head(self, path): - """ - Retrieve the HEAD revision for a repository. - - @type path: string - @param path: A working copy path. - - @rtype: integer - @return: A repository revision. - - """ - - info = self.client.info(path) - - returner = None - try: - returner = info["revision"].number - except KeyError, e: - log.exception("KeyError exception in svn.py get_head() for %s" % path) - except AttributeError, e: - log.exception("AttributeError exception in svn.py get_head() for %s" % path) - - return returner - - # - # properties - # - - def get_versioned_path(self, path): - """ - Generates a safe path to use with the prop* functions. - If the given path is unversioned, go to the next path up. - - @type path: string - @param path: A file or directory path. - - @rtype: string - @return: A prop* function-safe path. - - """ - - path_to_check = path - path_to_use = None - while path_to_check != "/" and path_to_check != "": - if self.is_versioned(path_to_check): - path_to_use = path_to_check - return path_to_use - - path_to_check = os.path.split(path_to_check)[0] - - return path_to_use - - def propset(self, path, prop_name, prop_value, overwrite=False, recurse=False): - """ - Adds an svn property to a path. If the item is unversioned, - add a recursive property to the parent path - - @type path: string - @param path: A file or directory path. - - @type prop_name: string - @param prop_name: An svn property name. - - @type prop_value: string - @param prop_value: An svn property value/pattern. - - @type recurse: boolean - @param recurse: If True, the property will be applied to all - subdirectories as well. - - """ - - path = self.get_versioned_path(path) - if overwrite: - props = prop_value - else: - props = self.propget(path, prop_name) - props = "%s%s" % (props, prop_value) - - try: - self.client.propset( - prop_name, - props, - path, - recurse=recurse - ) - return True - except pysvn.ClientError, e: - log.exception("pysvn.ClientError exception in svn.py propset() for %s" % path) - except TypeError, e: - log.exception("TypeError exception in svn.py propset() %s" % path) - - return False - - def proplist(self, path, rev=None): - """ - Retrieves a dictionary of properties for a path. - - @type path: string - @param path: A file or directory path. - - @rtype: dictionary - @return: A dictionary of properties. - - """ - if rev: - returner = self.client.proplist(path, revision=rev) - else: - returner = self.client.proplist(path) - if returner: - returner = returner[0][1] - else: - returner = {} - - return returner - - def propget(self, path, prop_name, rev=None): - """ - Retrieves a dictionary of the prop_value of the given - path and prop_name - - @type path: string - @param path: A file or directory path. - - @type prop_name: string or self.PROPERTIES - @param prop_name: An svn property name. - - @rtype: dictionary - @return: A dictionary where the key is the path, the value - is the prop_value. - - """ - - path = self.get_versioned_path(path) - try: - if rev: - returner = self.client.propget( - prop_name, - path, - recurse=True, - revision=rev - ) - else: - returner = self.client.propget( - prop_name, - path, - recurse=True - ) - except pysvn.ClientError, e: - log.exception("pysvn.ClientError exception in svn.py propget() for %s" % path) - return "" - - try: - returner = returner[path] - except KeyError, e: - returner = "" - - return returner - - def propdel(self, path, prop_name, recurse=True): - """ - Removes a property from a given path - - @type path: string - @param path: A file or directory path. - - @type prop_name: string or self.PROPERTIES - @param prop_name: An svn property name. - - @type recurse: boolean - @param recurse: If True, the property will be deleted from any - subdirectories also having the property set. - - """ - - path = self.get_versioned_path(path) - - returner = False - try: - self.client.propdel( - prop_name, - path, - recurse=recurse - ) - returner = True - except pysvn.ClientError, e: - log.exception("pysvn.ClientError exception in svn.py propdel() for %s" % path) - except TypeError, e: - log.exception("TypeError exception in svn.py propdel() %s" % path) - - return returner - - def propdetails(self, path): - """ - Each property on a path may be modified in the WC, deleted or added. - This method compares the properties on the local path to the base and - identifies which. - - @param path: the path (file or dir) in the WC to check - @type path: a path for something in a WC - - @return a dict of the form: - {prop_name: - {"value": value (WC value, unless deleted then base value), - "status": status of property} - } - - """ - local_props = self.proplist(path) - base_props = self.proplist(path, - rev=Revision("base").primitive()) - - prop_details = {} - - local_propnames = set(local_props.keys()) - base_propnames = set(base_props.keys()) - - for propname in (local_propnames | base_propnames): - - if propname in (local_propnames & base_propnames): - # These are the property names that are common to the WC and - # base. If their values have changed, list them as changed - if local_props[propname] == base_props[propname]: - prop_details[propname] = {"status": "unchanged", - "value": local_props[propname]} - - else: - prop_details[propname] = {"status": "changed", - "value": local_props[propname]} - - elif propname in local_propnames: - prop_details[propname] = {"status": "added", - "value": local_props[propname]} - - elif propname in base_propnames: - prop_details[propname] = {"status": "deleted", - "value": base_props[propname]} - - return prop_details - - def revpropset(self, prop_name, prop_value, url, rev=None, force=False): - """ - Adds an svn property to a path. If the item is unversioned, - add a recursive property to the parent path - - @type url: string - @param url: A url to attach the prop to - - @type prop_name: string - @param prop_name: An svn property name. - - @type prop_value: string - @param prop_value: An svn property value/pattern. - - @type rev: pysvn.Revision object - @param rev: The revision to attach the prop to - - @type force: boolean - @param force: If True, the property will be forced - - """ - - if rev is None: - rev = self.revision("head") - - self.client.revpropset(prop_name, prop_value, url, - revision=rev.primitive()) - - def revproplist(self, url, rev=None): - """ - Retrieves a dictionary of properties for a url. - - @type url: string - @param url: A repository url - - @type rev: pysvn.Revision object - @param rev: The revision to attach the prop to - - @rtype: tuple(revision object, propsdict) - @return: A tuple with revision information and property dictionary - - """ - - if rev is None: - rev = self.revision("head") - - return self.client.revproplist(url, rev.primitive())[1] - - def revpropget(self, url, prop_name, rev=None): - """ - Retrieves the revprop value for a specific url/propname/revision - - @type url: string - @param url: A repository url - - @type prop_name: string or self.PROPERTIES - @param prop_name: An svn property name. - - @type rev: pysvn.Revision object - @param rev: The revision to attach the prop to - - @rtype: tuple(revision object, propsdict) - @return: A tuple with revision information and property dictionary - - """ - - if rev is None: - rev = self.revision("head") - - return self.client.revpropget( - prop_name, - url, - revision=rev.primitive() - ) - - def revpropdel(self, url, prop_name, rev=None, force=False): - """ - Removes a property from a given path - - @type url: string - @param url: A repository url - - @type prop_name: string or self.PROPERTIES - @param prop_name: An svn property name. - - @type rev: pysvn.Revision object - @param rev: The revision to attach the prop to - - @type force: boolean - @param force: If True, the property deletion will be forced - - """ - - if rev is None: - rev = self.revision("head") - - return self.client.revpropdel( - prop_name, - url, - revision=rev.primitive(), - force=force - ) - - # - # callbacks - # - - def set_callback_cancel(self, func): - self.client.callback_cancel = func - - def callback_cancel(self): - if hasattr(self.client, "callback_cancel"): - self.client.callback_cancel() - - def set_callback_notify(self, func): - self.client.callback_notify = func - - def set_callback_get_log_message(self, func): - self.client.callback_get_log_message = func - - def set_callback_get_login(self, func): - self.client.callback_get_login = func - - def set_callback_ssl_server_trust_prompt(self, func): - self.client.callback_ssl_server_trust_prompt = func - - def set_callback_ssl_client_cert_password_prompt(self, func): - self.client.callback_ssl_client_cert_password_prompt = func - - def set_callback_ssl_client_cert_prompt(self, func): - self.client.callback_ssl_client_cert_prompt = func - - # - # revision - # - - def revision(self, kind, date=None, number=None): - """ - Create a revision object usable by pysvn - - @type kind: string - @param kind: An svn.REVISIONS keyword. - - @type date: integer - @param date: Used for kind=date, in the form of UNIX TIMESTAMP (secs). - - @type number: integer - @param number: Used for kind=number, specifies the revision number. - - @rtype: pysvn.Revision object - @return: A pysvn.Revision object. - - """ - - # TODO: Don't use kwargs for date/number, just accept a "value" as a - # regular arg - - value = None - if date: - value = date - elif number: - value = number - - return Revision(kind, value) - - # - # actions - # - - def add(self, paths, recurse=True): - """ - Add files or directories to the repository - - @type paths: list - @param paths: A list of files/directories. - - @type recurse: boolean - @param recurse: Recursively add a directory's children - - """ - - return self.client.add(paths, recurse) - - def add_backwards(self, path): - """ - This will add the given path to version control, and any parent - directories that themselves require adding. It is essential that "path" - contains a WC somewhere in its hierarchy. - - @param path: the path to add to version control - @type path: string - """ - head, tail = path,"" - tails = list() - - # We need to add backwards-recursively, since patch could create - # files any level deep in the tree - while not (self.is_working_copy(head) or self.is_versioned(head)): - head, tail = os.path.split(head) - tails.insert(0, tail) - # If we get all the way to the FS root, something really dumb - # has happened. - assert head, "No longer in a working copy!" - - # Walk back up the tree... - for tail in tails: - head = os.path.join(head, tail) - self.add(head, depth=pysvn.depth.empty) - - def copy(self, src, dest, revision=Revision("head")): - """ - Copy files/directories from src to dest. src or dest may both be either - a local path or a repository URL. revision is a pysvn.Revision object. - - @type src: string - @param src: Source URL or path. - - @type dest: string - @param dest: Destination URL or path. - - @type revision: pysvn.Revision object - @param revision: A pysvn.Revision object. - - """ - - return self.client.copy(src, dest, revision.primitive()) - - def copy_all(self, sources, dest_url_or_path, copy_as_child=False, - make_parents=False, ignore_externals=False): - """ - Copy sources to the dest_url_or_path. - - @type sources: list of tuples - @param sources: A list of tuples (url_or_path,revision) - - @type dest_url_or_path: string - @param dest_url_or_path: Destination URL or path. - - @type copy_as_child: boolean - @param copy_as_child: If there are multiple sources, copy as child - to dest_url_or_path (assumed to be a folder) - - @type make_parents: boolean - @param make_parents: TBD - - @type ignore_externals: boolean - @param ignore_externals: Omit externals - - """ - - return self.client.copy2(sources, dest_url_or_path, copy_as_child, - make_parents, None, ignore_externals) - - def checkout(self, url, path, recurse=True, revision=Revision("head"), - ignore_externals=False): - - """ - Checkout a working copy from a vcs repository - - @type url: string - @param url: A repository url. - - @type path: string - @param path: A local destination for the working copy. - - @type recurse: boolean - @param recurse: Whether or not to run a recursive checkout. - - @type revision: pysvn.Revision - @param revision: Revision to checkout, defaults to HEAD. - - @type ignore_externals: boolean - @param ignore_externals: Whether or not to ignore externals. - - """ - - return self.client.checkout(url, path, recurse=recurse, - revision=revision.primitive(), ignore_externals=ignore_externals) - - def cleanup(self, path): - """ - Clean up a working copy. - - @type path: string - @param path: A local working copy path. - - """ - - return self.client.cleanup(path) - - def revert(self, paths): - """ - Revert files or directories so they are unversioned - - @type paths: list - @param paths: A list of files/directories. - - """ - - return self.client.revert(paths) - - def commit(self, paths, log_message="", recurse=False, keep_locks=False): - """ - Commit a list of files to the repository. - - @type paths: list - @param paths: A list of files/directories. - - @type log_message: string - @param log_message: A commit log message. - - @type recurse: boolean - @param recurse: Whether or not to recurse into sub-directories. - - @type keep_locks: boolean - @param keep_locks: Whether or not to keep locks on commit. - - """ - - kwargs = {"keep_locks": keep_locks} - try: - # Simply setting recurse=False will not stop child files from getting - # committed. The pysvn.depth kwarg must be set to empty. - # Unfortunately, older pysvn/svn installations do not have the depth - # enum so for those, recurse must be used. - kwargs["depth"] = (recurse and pysvn.depth.infinity or pysvn.depth.empty) - except AttributeError: - kwargs["recurse"] = recurse - - retval = self.client.checkin(paths, log_message, **kwargs) - dummy_commit_dict = { - "revision": retval, - "action": rabbitvcs.lib.vcs.svn.commit_completed - } - self.client.callback_notify(dummy_commit_dict) - return retval - - def log(self, url_or_path, revision_start=Revision("head"), - revision_end=Revision("number", 0), limit=0, - discover_changed_paths=True, strict_node_history=False): - """ - Retrieve log items for a given path in the repository - - @type url_or_path: string - @param url_or_path: Path for which to get log items for - - @type revision_start: pysvn.Revision - @param revision_start: Most recent revision. Defaults to HEAD - - @type revision_end: pysvn.Revision - @param revision_end: Oldest revision. Defaults to rev 0. - - @type limit: int - @param limit: The maximum number of items to return. Defaults to 0. - - """ - - return self.client.log(url_or_path, revision_start.primitive(), - revision_end.primitive(), discover_changed_paths, - strict_node_history, limit) - - def export(self, src_url_or_path, dest_path, revision=Revision("head"), - recurse=True, ignore_externals=False, force=False, native_eol=None): - - """ - Export files from either a working copy or repository into a local - path without versioning information. - - @type src_url_or_path: string - @param src_url_or_path: A repository url. - - @type dest_path: string - @param dest_path: A local destination for the working copy. - - @type revision: pysvn.Revision - @param revision: The revision to retrieve from the repository. - - @type ignore_externals: boolean - @param ignore_externals: Whether or not to ignore externals. - - @type recurse: boolean - @param recurse: Whether or not to run a recursive checkout. - - """ - - return self.client.export(src_url_or_path, dest_path, force, - revision.primitive(), native_eol, ignore_externals, recurse) - - def import_(self, path, url, log_message, ignore=False): - - """ - Import an unversioned file or directory structure into a repository. - - @type path: string - @param path: An unversioned file or directory structure - - @type url: string - @param url: A repository location to put the imported files - - @type log_message: string - @param log_message: Log message to use for commit - - @type ignore: boolean - @param ignore: Disregard svn:ignore props - - """ - - return self.client.import_(path, url, log_message, ignore) - - def lock(self, url_or_path, lock_comment, force=False): - - """ - Lock a url or path. - - @type url_or_path: string - @param url_or_path: A url or path to lock - - @type lock_comment: string - @param lock_comment: A log message to go along with the lock. - - @type force: boolean - @param force: Steal the locks of others if they exist. - - """ - - return self.client.lock(url_or_path, lock_comment, force) - - def relocate(self, from_url, to_url, path, recurse=True): - - """ - Relocate the working copy from from_url to to_url for path - - @type from_url: string - @param from_url: A url to relocate from - - @type to_url: string - @param to_url: A url to relocate to - - @type path: string - @param path: The path of the local working copy - - """ - - return self.client.relocate(from_url, to_url, path, recurse) - - def move(self, src_url_or_path, dest_url_or_path): - - """ - Schedule a file to be moved around the repository - - @type src_url_or_path: string - @param src_url_or_path: A url/path to move from - - @type dest_url_or_path: string - @param dest_url_or_path: A url/path to move to - - """ - - if hasattr(self.client, "move2"): - return self.client.move2([src_url_or_path], dest_url_or_path) - else: - return self.client.move(src_url_or_path, dest_url_or_path, - force=True) - - def move_all(self, sources, dest_url_or_path, move_as_child=False, - make_parents=False): - """ - Move sources to the dest_url_or_path. - - @type sources: list of tuples - @param sources: A list of tuples (url_or_path,revision) - - @type dest_url_or_path: string - @param dest_url_or_path: Destination URL or path. - - @type move_as_child: boolean - @param move_as_child: If there are multiple sources, move as child - to dest_url_or_path (assumed to be a folder) - - @type make_parents: boolean - @param make_parents: TBD - - """ - - return self.client.move2(sources, dest_url_or_path, - move_as_child=move_as_child, make_parents=make_parents) - - def remove(self, url_or_path, force=False, keep_local=False): - - """ - Schedule a file to be removed from the repository - - @type url_or_path: string - @param url_or_path: A url/path to remove - - @type force: boolean - @param force: Force renaming, despite conflicts. Defaults to false. - - @type keep_local: boolean - @param keep_local: Keep the local copy (don't just delete it) - - """ - - return self.client.remove(url_or_path, force, keep_local) - - def revert(self, paths, recurse=False): - """ - Revert files or directories from the repository - - @type paths: list - @param paths: A list of files/directories. - - @type recurse: boolean - @param recurse: Recursively add a directory's children - - """ - - return self.client.revert(paths, recurse) - - def resolve(self, path, recurse=True): - """ - Mark conflicted files as resolved - - @type path: string - @param path: A local path to resolve - - @type recurse: boolean - @param recurse: Recursively add a directory's children - - """ - - return self.client.resolved(path, recurse) - - def switch(self, path, url, revision=Revision("head")): - """ - Switch the working copy to another repository source. - - @type path: string - @param path: A local path to a working copy - - @type url: string - @param url: The repository location to switch to - - @type revision: pysvn.Revision - @param revision: The revision of the repository to switch to (Def:HEAD) - - """ - - return self.client.switch(path, url, revision.primitive()) - - def unlock(self, path, force=False): - """ - Unlock locked files. - - @type path: string - @param path: A local path to resolve - - @type force: boolean - @param force: If locked by another user, unlock it anyway. - - """ - - return self.client.unlock(path, force) - - def update(self, path, recurse=True, revision=Revision("head"), - ignore_externals=False): - """ - Update a working copy. - - @type path: string - @param path: A local path to update - - @type recurse: boolean - @param recurse: Update child folders recursively - - @type revision: pysvn.Revision - @param revision: Revision to update to (Def: HEAD) - - @type ignore_externals: boolean - @param ignore_externals: Ignore external items - - """ - - return self.client.update(path, recurse, revision.primitive(), - ignore_externals) - - def annotate(self, url_or_path, from_revision=Revision("number", 1), - to_revision=Revision("head")): - """ - Get the annotate results for the given file and revision range. - - @type url_or_path: string - @param url_or_path: A url or local path - - @type from_revision: pysvn.Revision - @param from_revision: Revision from (def: 1) - - @type to_revision: pysvn.Revision - @param to_revision: Revision to (def: HEAD) - - """ - - return self.client.annotate(url_or_path, from_revision.primitive(), - to_revision.primitive()) - - def merge_ranges(self, source, ranges_to_merge, peg_revision, - target_wcpath, notice_ancestry=False, force=False, dry_run=False, - record_only=False): - """ - Merge a range of revisions. - - @type source: string - @param source: A repository location - - @type ranges_to_merge: list of tuples - @param ranges_to_merge: A list of revision ranges to merge - - @type peg_revision: pysvn.Revision - @param peg_revision: Indicates which revision in sources is valid. - - @type target_wcpath: string - @param target_wcpath: Target working copy path - - @type notice_ancestry: boolean - @param notice_ancestry: unsure - - @type force: boolean - @param force: unsure - - @type dry_run: boolean - @param dry_run: Do a test/dry run or not - - @type record_only: boolean - @param record_only: unsure - - TODO: Will firm up the parameter documentation later - - """ - return self.client.merge_peg2(source, - ranges_to_merge, - peg_revision.primitive(), - target_wcpath, - notice_ancestry=notice_ancestry, - force=force, - dry_run=dry_run, - record_only=record_only) - - def has_merge2(self): - """ - Tests whether the user has a later version of pysvn/svn installed - with more merge features - """ - return hasattr(self.client, "merge_peg2") - - def merge_trees(self, url_or_path1, revision1, url_or_path2, revision2, - local_path, force=False, recurse=True, record_only=False): - """ - Merge two trees into one. - - @type url_or_path1: string - @param url_or_path1: From WC/URL location - - @type revision1: pysvn.Revision - @param revision1: Indicates the revision of the URL/Path - - @type url_or_path2: string - @param url_or_path2: To WC/URL location - - @type revision2: pysvn.Revision - @param revision2: Indicates the revision of the URL/Path - - @type local_path: string - @param local_path: Target working copy path - - @type force: boolean - @param force: unsure - - @type recurse: boolean - @param recurse: Merge children recursively - - @type record_only: boolean - @param record_only: unsure - - TODO: Will firm up the parameter documentation later - - """ - - return self.client.merge(url_or_path1, revision1.primitive(), - url_or_path2, revision2.primitive(), local_path, force, recurse, - record_only) - - def diff(self, tmp_path, url_or_path, revision1, url_or_path2, revision2, - recurse=True, ignore_ancestry=False, diff_deleted=True, - ignore_content_type=False): - """ - Returns the diff text between the base code and the working copy. - - @type tmp_path: string - @param tmp_path: Temporal path to store the diff - - @type url_or_path: string - @param url_or_path: From WC/URL location - - @type revision1: pysvn.Revision - @param revision1: Indicates the revision of the URL/Path (def: pysvn.Revision( opt_revision_kind.base )) - - @type url_or_path2: string - @param url_or_path2: From WC/URL location - - @type revision2: pysvn.Revision - @param revision2: Indicates the revision of the URL/Path (def: pysvn.Revision( opt_revision_kind.working )) - - @type recurse: boolean - @param recurse: Whether or not to recurse into sub-directories. (def: True) - - @type ignore_ancestry: boolean - @param ignore_ancestry: Whether or not to recurse into sub-directories. (def: False) - - @type diff_deleted: boolean - @param diff_deleted: Whether or not to recurse into sub-directories. (def: True) - - @type ignore_content_type: boolean - @param ignore_content_type: Whether or not to recurse into sub-directories. (def: False) - - """ - - return self.client.diff(tmp_path, url_or_path, revision1.primitive(), - url_or_path2, revision2.primitive(), recurse, ignore_ancestry, - diff_deleted, ignore_content_type) - - def diff_summarize(self, url_or_path1, revision1, url_or_path2, revision2, - recurse=True, ignore_ancestry=False): - """ - Returns a summary of changed items between two paths/revisions - - @type url_or_path1: string - @param url_or_path1: First WC/URL location - - @type revision1: pysvn.Revision - @param revision1: Indicates the revision of the URL/Path (def: pysvn.Revision( opt_revision_kind.base )) - - @type url_or_path2: string - @param url_or_path2: Second WC/URL location - - @type revision2: pysvn.Revision - @param revision2: Indicates the revision of the URL/Path (def: pysvn.Revision( opt_revision_kind.working )) - - @type recurse: boolean - @param recurse: Whether or not to recurse into sub-directories. (def: True) - - @type ignore_ancestry: boolean - @param ignore_ancestry: Whether or not to recurse into sub-directories. (def: False) - - @type depth: pysvn.depth enum - @param depth: a replacement for recurse - - """ - - return self.client.diff_summarize(url_or_path1, revision1.primitive(), - url_or_path2, revision2.primitive(), recurse, ignore_ancestry) - - def list(self, url_or_path, revision=Revision("HEAD"), recurse=True): - return self.client.list(url_or_path, revision=revision.primitive(), - recurse=recurse) - - def mkdir(self, url_or_path, log_message): - """ - Make a new directory in the repository or working copy - - @type url_or_path: string - @param url_or_path: Url in the repository or path in working copy - - @type log_message: string - @param log_message: A log message to use in your commit - - """ - - return self.client.mkdir(url_or_path, log_message) - - def apply_patch(self, patch_file, base_dir): - """ - Applies a patch created for this WC. - - @type patch_file: string - @param patch_file: the path to the patch file - - @type base_dir: string - @param base_dir: the base directory from which to interpret the paths in - the patch file - """ - - any_failures = False - - for file, success, rej_file in parse_patch_output(patch_file, base_dir): - - fullpath = os.path.join(base_dir, file) - - event_dict = dict() - - event_dict["path"] = file - event_dict["mime_type"] = "" # meh - - if success: - event_dict["action"] = _("Patched") # not in pysvn, but - # we have a fallback - else: - any_failures = True - event_dict["action"] = _("Patch Failed") # better wording needed? - - # Creates its own notifications. - self.add_backwards(fullpath) - - if rej_file: - rej_info = { - "path" : rej_file, - "action" : _("Rejected Patch"), - "mime_type" : None - } - - if self.client.callback_notify: - self.client.callback_notify(event_dict) - if rej_file: - self.client.callback_notify(rej_info) - - - - def is_version_less_than(self, version): - """ - @type version: tuple - @param version: A version tuple to compare pysvn's version to - """ - - if version[0] > pysvn.version[0]: - return True - - if ((version[0] == pysvn.version[0]) - and (version[1] > pysvn.version[1])): - return True - - if ((version[0] == pysvn.version[0]) - and (version[1] == pysvn.version[1]) - and (version[2] > pysvn.version[2])): - return True - - if ((version[0] == pysvn.version[0]) - and (version[1] == pysvn.version[1]) - and (version[2] == pysvn.version[2]) - and (version[3] > pysvn.version[3])): - return True - - return False - - def is_version_greater_than(self, version): - """ - @type version: tuple - @param version: A version tuple to compare pysvn's version to - """ - - if version[0] < pysvn.version[0]: - return True - - if ((version[0] == pysvn.version[0]) - and (version[1] < pysvn.version[1])): - return True - - if ((version[0] == pysvn.version[0]) - and (version[1] == pysvn.version[1]) - and (version[2] < pysvn.version[2])): - return True - - if ((version[0] == pysvn.version[0]) - and (version[1] == pysvn.version[1]) - and (version[2] == pysvn.version[2]) - and (version[3] < pysvn.version[3])): - return True - - return False Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/ca/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/ca/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/cs/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/cs/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/de/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/de/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/en_GB/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/en_GB/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/es/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/es/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/es_CL/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/es_CL/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/fa/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/fa/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/fr/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/fr/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/he/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/he/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/hr/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/hr/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/it/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/it/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/ja/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/ja/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/nb/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/nb/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/nl/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/nl/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/pl/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/pl/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/pt_BR/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/pt_BR/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/ro/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/ro/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/ru/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/ru/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/sk/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/sk/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/sl/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/sl/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/sv/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/sv/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/th/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/th/LC_MESSAGES/RabbitVCS.mo differ Binary files /tmp/jdBPdfq6OL/rabbitvcs-0.13.1/rabbitvcs/locale/zh_CN/LC_MESSAGES/RabbitVCS.mo and /tmp/OKWG99o17g/rabbitvcs-0.15.0.5/rabbitvcs/locale/zh_CN/LC_MESSAGES/RabbitVCS.mo differ diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/cs.po rabbitvcs-0.15.0.5/rabbitvcs/po/cs.po --- rabbitvcs-0.13.1/rabbitvcs/po/cs.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/cs.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1336 +0,0 @@ -# Czech translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-03-27 10:34+0000\n" -"Last-Translator: Ladislav Prskavec \n" -"Language-Team: Czech \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "" - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "Políčko z revize je povinné." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Branch/tag" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Spuštím příkaz branch/tag" - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Branch/tag dokončen." - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Aktualizace na revizi" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Aktualizuji" - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Aktualizace dokončena." - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Políčko nové jméno je povinné" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Přejmenovat" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Spouštím příkaz Přejmenovat" - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Přejmenování dokončeno." - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Nemohu anotovat adresář" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Anotace - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Řádek" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revize" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Datum" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Test" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "Políčko revize musí obsahovat číslo" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Generuji anotaci" - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Dokončeno" - -#: ui/settings.py:50 -msgid "English" -msgstr "Anglicky" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Vyberte program" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Opravdu chcete vymazat cesty k repozitory?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Cesty k repozitory vymazány." - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "Opravdu chcete vymazat zprávy?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Zprávy vymazány." - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "Opravdu chcete vymazat vaše autentikační údaje?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Autentikační údaje vymazány." - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Vyčistit" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Čistím" - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Čištění dokončeno" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Políčka z a url jsou povinná" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Přesunutí" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Spouštím příkaz Přesunutí" - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Přesunutí dokončeno" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Cesta" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Nahrávám..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Našel %d položek" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Přidat" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "" - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Přidání dokončeno" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Otevřít" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Procházet" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Smazat" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Přídat na ignore list" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Importovat - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "" - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Import" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "" - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Zamčeno" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Ano" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "" - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Odstranit zámek" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Zobrazit Diff" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Zobrazit log" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Exportovat - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "" - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Export" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "" - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "" - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Akce" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Mime Type" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Prázdná zpráva" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Dokončeno" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Dokončeno" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Status" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Commit" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "" - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Obnovit" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Zpráva" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Zvolit adresář" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Zvolit soubor" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Opravdu chcete pokračovat?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "zvolené(á) položky(a)" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Switch" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "" - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Log - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Zrušeno" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N/A" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(autor neznámý)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "" - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Vlastnosti - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Jméno" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Hodnota" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "" - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Update" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Repozitory bylo úspěšně vytvořeno" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Revize" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Od:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "HEAD" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Do:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Přidat zprávu" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Commit do:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Předchozí zprávy" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Vybrat / zrušit vše" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Soubory k uzamknutí" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Vlastnosti pro:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Upravit..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Nový..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Vlastnosti" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/cesta:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Odkazy" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Informace o verzi" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Autoři:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Děkujeme:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Nové jméno:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Repozitory" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Limit:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Log" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Obnovit" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Z URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Volby" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Procházet..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "Obecné" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Jazyk:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Logování" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "Minimální úroveň pro logování" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Uložená data" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Nastavení" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Typ" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Předchozí zprávy" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "Opravdu chcete smazat %item%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Přijmout natrvalo" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Přijmout jednou" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Authentikace" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Kontrola certifikátu" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Potvrzení" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Smazat potvrzení" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Zakázané" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Fingerprint:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Host" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Vydavatel:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Jméno:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Heslo:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Vlastnost" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Vlastnost:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "Realm" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Uložit autentikaci" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "Platné:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Hodnota:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Debug:" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus:" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Start/Restart Service" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Exit Service" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Bugy" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "Test Asynchronicity" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Otevřít shell" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Obnovit status" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Debug Revert" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Nevalidní" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Přidat emblem" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Přidat emblem" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "Check out pracovní kopie" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Update pracovní kopie" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Commit změn do repozitory" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Zobrazit log" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Update na revizi..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Přejmenovat" - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Relocate..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Branch/tag" - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Switch..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Merge..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Anotace..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Anotace souboru" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Help" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Zobrazit nápovědu" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Přeskočeno" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Aktualizováno" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Externí" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Modifikováno" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Přepsáno" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Změněno" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Anotováno" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Odemčeno" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Zámek selhal" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Odemčení selhalo" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Neznámé" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Chybějící" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Spojeno" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/de.po rabbitvcs-0.15.0.5/rabbitvcs/po/de.po --- rabbitvcs-0.13.1/rabbitvcs/po/de.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/de.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1358 +0,0 @@ -# German translations for PACKAGE package. -# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Marcel Stimberg , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: neu\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-03-19 09:59+0000\n" -"Last-Translator: Steve Markgraf \n" -"Language-Team: German <>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" -"X-Poedit-Basepath: ../\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Ihre Arbeitskopie wurde verändert. Wenn Sie von der HEAD-Revision kopieren, " -"gehen diese Änderungen verloren." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Sie müssen einen Zielpfad angeben." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "Sie müssen die Ausgangsrevision angeben." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Ungültige Revisionsinformation" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Zweig/Tag" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Erstelle Zweig/Tag..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Zweig/Tag-Erstellung abgeschlossen" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Aktualisiere auf Revision" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Aktualisiere..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Aktualisierung abgeschlossen." - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Der neue Name muss angegeben werden" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Umbenennen" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Benenne um..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Umbenennen abgeschlossen" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Kann kein Verzeichnis annotieren" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Annotiere - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Zeile" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revision" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Datum" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Text" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "Die Ausgangsrevision muss eine ganze Zahl sein." - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Erzeuge Annotationen..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Abgeschlossen" - -#: ui/settings.py:50 -msgid "English" -msgstr "englisch" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Ein Programm auswählen" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Wollen Sie wirklich die Projektarchivpfade löschen?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Projektarchivpfade gelöscht" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "Wollen Sie wirklich die früheren Nachrichten löschen?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Frühere Logmeldungen gelöscht" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "Wollen Sie wirklich Ihre Authentifizierungsinformationen löschen?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Authentifizierungsinformationen gelöscht" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Aufräumen" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Räume auf..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Aufräumen abgeschlossen" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Die Ursprungs- und Ziel-URL müssen angegeben werden." - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Zweig/Tag wechseln" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Stelle URL um..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Umstellen der URL abgeschlossen" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Pfad" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Erweiterung" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Lade..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "%d Objekt(e) gefunden" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Hinzufügen" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Füge hinzu..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Hinzufügen abgeschlossen" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Öffnen" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Dursuchen" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Löschen" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Zur Liste der ignorierten Dateien hinzufügen" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Import - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "Die Projektarchiv-URL muss angegeben werden." - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Import" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Importiere..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Import abgescholssen" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Gesperrt" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Ja" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Sperren" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Sperre..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Sperren abgeschlossen" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Sperre aufheben" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Unterschiede anzeigen" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Log anzeigen" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Exportieren - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "Die Projektarchiv-URL und der Zielpfad müssen angegeben werden." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Exportieren" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Exportiere" - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Export abgeschlossen" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Auflösen" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Löse Konflikte auf..." - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Auflösen abgeschlossen" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Aktion" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "MIME-Typ" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Leere Logmeldung" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Abgeschlossen" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - abgeschlossen" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "Der angegebene Pfad ist keine Arbeitskopie" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Textstatus" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "Eigenschaftenstatus" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Übernehmen" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Übernehme ins Projektarchiv..." - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Übernehmen abgeschlossen" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Rückgängig machen" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Wiederherstellen" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Logmeldung" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Ordner wählen" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "bis" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Datei wählen" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Wollen Sie wirklich fortfahren?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "die ausgewählten Objekte" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "Der Ort des Projektarchivs muss angegeben werden." - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Zweig/Tag wechseln" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Wechsele Zweig/Tag..." - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Zweig/Tag gewechselt" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Entsperren" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Entsperre..." - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Entsperren abgeschlossen" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "Zusammenführen testen" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "Zusammenfü" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "Führe zusammen..." - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Zusammenführen abgeschlossen" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Zusammenführen" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "Auschecken - %s" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "Auschecken" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Checke aus..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Auschecken beendet" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Log - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Kopiert von Pfad" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Kopiert von Revision" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Abgebrochen" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "n/v" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(kein Autor)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "Ermittle Logmeldungen..." - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Eigenschaften - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Name" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Wert" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Mache rückgängig..." - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Rückgängigmachen abgeschlossen" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Aktualisieren" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Projektarchiv erfolgreich erstellt" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" -"Beim Erstellen des Projektarchivs ist ein Fehler aufgetreten. Stellen Sie " -"sicher, dass der angegebene Ordner leer ist." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Revision" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "Umstelldetails" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Von:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "HEAD" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Auf:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Nachrichten" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Logmeldung hinzufügen" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "Geänderte Dateien (Doppelklick um Unterschiede anzuzeigen)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Übernehmen nach:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Frühere Logmeldungen" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Alle aus-/abwählen" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Nicht versionierte Dateien anzeigen" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Zu sperrende Dateien" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "Bitte beschreiben Sie, warum Sie diese Dateien sperren" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Dateien sperren" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Existierende Sperren brechen" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Eigenschaften für:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Bearbeiten..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Neu..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Eigenschaften" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Pfad:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Von Revision" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "Bis Revision" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Annotieren" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Links" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Versionsinformationen" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "Über" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Autoren:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Danksagungen:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Neuer Name:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "Kopie erstellen von" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Projektarchiv" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Kopie von HEAD" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Kopie von Revision" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Kopie von Arbeitskopie" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "Betroffene Datei(en)" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Logmeldung" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Revisionen" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Limit:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Log" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Aktualisieren" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Zeige Revisionen:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Bei Kopie anhalten" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Quell-URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "Von: (URL und zusammenzuführende Revision)" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Optionen" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Revisionsbereich" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "Nach: (URL und zusammenzuführende Revision)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "URL von der zusammengeführt werden soll" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Arbeitskopie" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" -"Wählen Sie diese Methode, wenn Sie Änderungen an einem Zweig vorgenommen " -"haben und Ihre Änderungen mit einem anderen Zweig zusammenführen möchten." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" -"Wählen Sie diese Methode, wenn Sie zwei verschiedene Zweige in Ihre " -"Arbeitskopie zusammenführen möchten." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Abstammung ignorieren" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Zusammenführassistent" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Einen Revisionsbereich zusammenführen" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Zwei verschiedene Bäume zusammenführen" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Nur als zusammengeführt markieren" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Rekursiv" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Zusammenführen testen" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" -"Benutzen Sie den Log-Dialog, um die Revisionen zum Zusammenführen " -"auszuwählen. Oder geben Sie die Revisionen per Hand an, durch Komma " -"getrennt. Sie können einen Revisionsbereich mit dem Bindestrich angeben.\n" -"\n" -"Beispiel: 4-7, 9,11,15-HEAD\n" -"\n" -"Lassen Sie das Feld leer, um alle Revisionen zusammenzuführen." - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Authentifizierung" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Logmeldungen" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Logging-Optionen" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Programm zum Durchsuchen von Projektarchiven" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Programm zum Dateivergleich" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "URL-Historie" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Durchsuchen..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Ihre Anmeldeinformationen löschen" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Embleme einschalten" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Dateiattribute einschalten" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "Rekursive Statusüberprüfungen aktivieren" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Externe Programme" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "Allgemein" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Sprache:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Logging" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "Minimaler Loglevel" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Zahl der zu merkenden URLs" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Zahl der zu merkenden Logmeldungen" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Gespeicherte Daten" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Einstellungen" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Neue Version auf der rechten Seite zeigen" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Typ:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Aufräumen angefragt...\n" -"\n" -"Aufräumen der Arbeitskopie beginnen?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Zertifikatsdetails" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Eigenschaftsdetails bearbeiten" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Bitte geben Sie Ihre Authentifizierungsinformationen an" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Frühere Logmeldungen" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" -"Wollen Sie wirklich %item% löschen?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Dauerhaft akzeptieren" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Einmal akzeptieren" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Anmeldung" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Zertifikat prüfen" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Bestätigung" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Bestätigung zum Löschen" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Verweigern" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Fingerabdruck:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Server:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Aussteller:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Benutzername:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Passwort:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Eigenschaft" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Eigenschaft:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "Bereich:" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Anmeldeinformationen speichern" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "Das Objekt/Die Objekte werden in den Mülleimer verschoben." - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "Gültig:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Wert:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Zielort:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "Ignoriere Externe Links" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Import-Logmeldung" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Ignorierte Dateien einbeziehen" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "Aktualisierungstiefe" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Das Projektarchiv der Arbeitskopie ändern" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Debug" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Start/Restart Service" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Exit Service" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Bugs" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "Test Asynchronicity" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Open Shell" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Refresh Status" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Debug Revert" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "Reverts everything it sees" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Ungültig machen" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "Einen Aufruf von invalidate_extension_info() forcieren" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Emblem hinzufügen" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Ein Emblem hinzufügen" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "Eine Arbeitskopie auschecken" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Eine Arbeitskopie aktualisieren" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Änderungen in das Projektarchiv übertragen" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "Die an einer Datei vorgenommen Änderung ansehen" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Log anzeigen" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "Logmeldungen einer Datei zeigen" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "Ein Objekt zum Hinzufügen zum Projektarchiv vormerken" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "Ein Objekt ignorieren" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Alle Dateien mit dieser Erweiterung ignorieren" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Aktualisieren auf..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Eine Datei auf eine bestimmte Revision aktualisieren" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Umbenennen..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "Ein Objekt zum Umbenennen im Projektarchiv vormerken" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "Ein Objekt zum Löschen aus dem Projektarchiv vomerken" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Ein Objekt in seinen unveränderten Zustand rückversetzen" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Ein in Konflikt stehendes Objekt als gelöst markieren" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "URL umstellen" - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "URL des Projektarchivs umstellen" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "Sperren..." - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "Objekte lokal sperren" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Sperre aufheben..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Sperre für Objekte aufheben" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Arbeitskopie aufräumen" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" -"Eine Arbeitskopie oder ein Projektarchiv ohne Versionsinformationen " -"exportieren" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Projektarchiv hier erstellen" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Ein Projektarchiv in einem Ordner erstellen" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Ein Objekt in ein Projektarchiv importieren" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Zweig/Tag..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Ein Objekt zu einem anderen Ort im Projektarchiv kopieren" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Zweig/Tag wechseln..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Den Ort des Projektarchivs für eine Arbeitskopie umstellen" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Zusammenführen..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "Ein Assistent zum Zusammenführen" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Annotieren" - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Autoren- und Revisionsinformationen zu einer Datei anzeigen" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "Die Eigenschaften eines Objekts ansehen" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Hilfe" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Hilfe ansehen" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Einstellungen von RabbitVCS sehen oder bearbeiten" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "Über RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Hinzugefügt" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Kopiert" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Gelöscht" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Wiederhergestellt" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "Rückgängig gemacht" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "Rückgängig machen fehlgeschlagen" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Aufgelöst" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Übersprungen" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Aktualisiert" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Extern" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Geändert" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Ersetzt" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Geändert" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Annotiert" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Entsperrt" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Sperren fehlgeschlagen" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Entsperren fehlgeschlagen" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "Nicht anwendbar" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Unbekannt" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Unverändert" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Fehlend" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "Verhindert" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Zusammengeführt" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "Im Konflikt" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/es_CL.po rabbitvcs-0.15.0.5/rabbitvcs/po/es_CL.po --- rabbitvcs-0.13.1/rabbitvcs/po/es_CL.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/es_CL.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1423 +0,0 @@ -# Spanish translations for PACKAGE package -# Traducciones al español para el paquete PACKAGE. -# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Camilo Flores , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-04-01 00:36-0300\n" -"Last-Translator: Camilo Flores \n" -"Language-Team: Spanish\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ui/branch.py:71 -msgid "There have been modifications to your working copy. If you copy from the HEAD revision you will lose your changes." -msgstr "Se han detectado cambios en tu copia local. Si actualizas desde la versión HEAD perderás los cambios." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Debes ingresar una ruta de destino." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "Es necesario el campo \"desde versión\"." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Información no válida sobre la versión." - -#: ui/branch.py:123 -#: ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Ejecutando el comando Branch/tag" - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Comando Branch/tag exitoso." - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Actualizar según versión" - -#: ui/updateto.py:71 -#: ui/update.py:54 -msgid "Updating..." -msgstr "Actualizando..." - -#: ui/updateto.py:79 -#: ui/update.py:57 -msgid "Completed Update" -msgstr "Actualización exitosa." - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Es necesario el campo \"nuevo nombre\"" - -#: ui/rename.py:70 -#: ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Cambiar nombre" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Ejecutando comando de cambio de nombre..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Cambio de nombre exitoso." - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Imposible anotar el directorio" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Anotar - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Línea" - -#: ui/annotate.py:71 -#: ui/log.py:80 -#: ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 -#: ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Versión" - -#: ui/annotate.py:71 -#: ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 -#: ui/dialog.py:47 -#: ui/log.py:81 -msgid "Date" -msgstr "Fecha" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Texto" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "El campo \"desde version\" debe ser un número entero" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Generando Anotación..." - -#: ui/annotate.py:138 -#: lib/vcs/svn/__init__.py:122 -#: lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Completo." - -#: ui/settings.py:50 -msgid "English" -msgstr "Inglés" - -#: ui/settings.py:156 -#: ui/settings.py:165 -msgid "Select a program" -msgstr "Elije el programa" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "¿Estás seguro de querer reestablecer las rutas de tu repositorio?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Rutas del repositorio reestablecidas" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "¿Estás seguro de querer eliminar tus mensajes previos?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Mensajes previos eliminados" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "¿Estas seguro de querer eliminar tu información de autenticación?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Información de autenticación eliminada" - -#: ui/cleanup.py:54 -#: lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Limpiar" - -#: ui/cleanup.py:55 -#: ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Limpiando..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Limpieza Completa" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Son necesarios los campos \"desde\" y \"hasta\" la url" - -#: ui/relocate.py:86 -#: ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Relocalizar" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Ejecutando relocalización..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Relocalización Completa" - -#: ui/add.py:64 -#: ui/lock.py:66 -#: ui/resolve.py:55 -#: ui/action.py:66 -#: ui/commit.py:73 -#: ui/unlock.py:55 -#: ui/log.py:89 -#: ui/revert.py:55 -msgid "Path" -msgstr "Ruta" - -#: ui/add.py:64 -#: ui/lock.py:66 -#: ui/resolve.py:55 -#: ui/commit.py:73 -#: ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Extensión" - -#: ui/add.py:78 -#: ui/lock.py:96 -#: ui/commit.py:97 -#: ui/unlock.py:70 -#: ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Cargando..." - -#: ui/add.py:81 -#: ui/lock.py:99 -#: ui/commit.py:100 -#: ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Encontrado %d elemento(s)" - -#: ui/add.py:115 -#: ui/commit.py:269 -#: ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Añadir" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Añadiendo..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Añadir Completado" - -#: ui/add.py:141 -#: ui/lock.py:206 -#: ui/commit.py:239 -msgid "Open" -msgstr "Abrir" - -#: ui/add.py:150 -#: ui/lock.py:216 -#: ui/commit.py:249 -msgid "Browse to" -msgstr "Navegar hacia" - -#: ui/add.py:159 -#: ui/commit.py:259 -#: ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Eliminar" - -#: ui/add.py:168 -#: ui/commit.py:299 -#: lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Añadir a lista de ignorados" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Importar - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "Es necesario el campo de la URL del repositorio." - -#: ui/import.py:80 -#: ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Importar" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Importando..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Importar Completado" - -#: ui/lock.py:67 -#: lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Bloqueado" - -#: ui/lock.py:90 -#: ui/lock.py:107 -msgid "Yes" -msgstr "Sí" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Bloquear" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Bloqueando..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Bloqueo Completado" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Levantar Bloqueo" - -#: ui/lock.py:186 -#: ui/commit.py:229 -#: lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Ver Diferencias" - -#: ui/lock.py:196 -#: ui/glade/switch.glade.h:6 -#: ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 -#: ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Mostrar historial" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Exportar - %s" - -#: ui/export.py:58 -#: ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "Se necesita el campo de la URL del repositorio y la ruta de destino." - -#: ui/export.py:79 -#: lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Exportar" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Exportando..." - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Exportar Completado" - -#: ui/resolve.py:45 -#: ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Resolver" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Resolviendo..." - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Resolver Completado" - -#: ui/action.py:66 -#: ui/log.py:89 -msgid "Action" -msgstr "Acción" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Tipo MIME" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Mensaje vacío" - -#: ui/action.py:249 -#: ui/log.py:309 -msgid "Finished" -msgstr "Finalizado" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Finalizado" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "La ruta proporcionada no corresponde a una copia de trabajo" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Estado del Texto" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "Estado de la Propiedad" - -#: ui/commit.py:188 -#: ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Enviar cambios" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Enviando cambios..." - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Envío de cambios completado" - -#: ui/commit.py:279 -#: ui/revert.py:45 -#: ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Revertir modificaciones" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Restaurar" - -#: ui/dialog.py:47 -#: ui/log.py:81 -#: ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Mensaje" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Selecciona una carpeta" - -#: ui/dialog.py:117 -#: ui/glade/log.glade.h:12 -msgid "to" -msgstr "hacia" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Selecciona un archivo" - -#: ui/dialog.py:229 -#: ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "¿Estás seguro de querer continuar?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "los elementos seleccionados" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "Es necesario el campo de la ubicación del repositorio." - -#: ui/switch.py:81 -#: ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Ejecutando Switch" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Switch Completado" - -#: ui/unlock.py:45 -#: ui/unlock.py:109 -msgid "Unlock" -msgstr "Desbloquear" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Desbloqueando..." - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Desbloqueo Completo" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "Ejecutando " - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "Prueba de factibilidad de fusión completado" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "Fusionando..." - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Fusión completa" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Fusionar" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "Descargar repositorio - %s" - -#: ui/checkout.py:100 -#: ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "Descargar repositorio" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Descargando repositorio..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Descarga de repositorio completa" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Bitácora - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Copiar desde ruta" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Copiar desde versión" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Cancelado" - -#: ui/log.py:236 -#: ui/log.py:237 -#: ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N/D" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(sin autor)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "Recuperando información de la bitácora" - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Propiedades - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Nombre" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Valor" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Revirtiendo cambios..." - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Reversión de cambios completada" - -#: ui/update.py:53 -#: ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Actualizar" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Repositorio creado exitosamente" - -#: ui/create.py:51 -msgid "There was an error creating the repository. Make sure the given folder is empty." -msgstr "Hubo un error al crear el repositorio. Asegúrate de que la carpeta especificada esté vacía." - -#: ui/glade/switch.glade.h:1 -#: ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Versión" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "Detalles del Switch" - -#: ui/glade/switch.glade.h:3 -#: ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Desde:" - -#: ui/glade/switch.glade.h:4 -#: ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 -#: ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "" - -#: ui/glade/switch.glade.h:8 -#: ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Hasta:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Mensajes de notificación" - -#: ui/glade/commit.glade.h:1 -#: ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Agregar Mensaje" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "Archivos Modificados (doble click para comparar diferencias)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Enviar hacia:" - -#: ui/glade/commit.glade.h:5 -#: ui/glade/lock.glade.h:4 -#: ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 -#: ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Mensajes anteriores" - -#: ui/glade/commit.glade.h:6 -#: ui/glade/lock.glade.h:5 -#: ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Seleccionar / Descartar todos" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Mostrar archivos fuera del control de versiones" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Archivos a bloquear" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "Por favor describe por qué estás bloqueando estos archivos" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Bloquear Archivos" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Romper los bloqueos" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Propiedades para:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Editar..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Nuevo..." - -#: ui/glade/properties.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Propiedades" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Ruta:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Desde la versión" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "Hasta la versión" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Anotar" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Información de la versión" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/about.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "Acerca de" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Autores:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Agradecimientos:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Nuevo nombre:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "Crear copia desde" - -#: ui/glade/branch.glade.h:3 -#: ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Repositorio" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Copiar desde versión HEAD" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Copiar desde la versión" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Copiar desde la copia de trabajo" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "Archivos afectados" - -#: ui/glade/log.glade.h:3 -#: ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Mensaje" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Tabla de versiones" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Límite:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Bitácora" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Refrescar" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Mostrar versiones:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Detenerse en la copia" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Desde la URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "Desde: (URL y versión a fusionar)" - -#: ui/glade/merge.glade.h:3 -#: ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Opciones" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Rango de versiones" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "Desde: (URL y versión a fusionar)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "URL desde la cual fusionar" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Copia de trabajo" - -#: ui/glade/merge.glade.h:8 -msgid "Choose this method if you have made some changes to a branch and wish to merge your changes with another branch." -msgstr "Escoge este método si has hecho cambios a un branch y deseas fusionar tus cambios con otro branch" - -#: ui/glade/merge.glade.h:9 -msgid "Choose this method if you wish to merge two different branches into your working copy." -msgstr "Escoge este método si deseas fusionar dos branch diferentes en tu copia de trabajo" - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Ignorar antecesores" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Asistente de Fusión" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Fusionar un rango de versiones" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Fusionar dos árboles diferentes" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Registrar sólo la fusión" - -#: ui/glade/merge.glade.h:16 -#: ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Recursivamente" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Comprobar factibilidad de fusión" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write out the revisions manually, each separated by a comma. You can specify a revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Autenticación" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Mensajes de la bitácora" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Opciones de la bitácora" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Programa a usar para navegar en los repositorios" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Programa a usar para comparar archivos" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "Historia de la URL" - -#: ui/glade/settings.glade.h:8 -#: ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Navegar..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Eliminar tu información de autenticación" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Activar emblemas" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Activar atributos de archivo" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "Activar comprobación de estado recursiva" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Programas Externos" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "General" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Idioma:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Bitácora" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Cantidad de URLs a recordar" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Cantidad de mensajes a recordar" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Información guardada" - -#: ui/glade/settings.glade.h:21 -#: lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Configuración" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Mostrar la nueva versión al lado derecho" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Tipo:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Limpieza Solicitada...\n" -"\n" -"¿Deseas comenzar la limpieza de tu copia de trabajo?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Detalles del Certificado" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Edita los detalles de la propiedad" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Por favor agrega tus detalles de autenticación" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Mensajes anteriores" - -#: ui/glade/dialogs.glade.h:7 -msgid "Are you sure you want to delete %item%?" -msgstr "¿Estás seguro de eliminar %item%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Aceptar permanentemente" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Aceptar por ahora" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Autenticación" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Comprobar certificado" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Confirmación" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Eliminar confirmación" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Denegar" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Huella digital:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Reportado por:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Nombre de usuario:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Contraseña:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Propiedad" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Propiedad:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Guardar autenticación" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "Los elementos serán enviados a la Papelera" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Valor:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Destino:" - -#: ui/glade/checkout.glade.h:8 -#: ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "Omitir los Externos" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Importar mensaje" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Incluir archivos ignorados" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "Profundidad de la actualización" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Cambiar el repositorio de tu copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Depurar" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Iniciar/Detener Servicio" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Terminar Servicio" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "Probar Asincronicidad" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Abrir Consola" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Refrescar Estado" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Revertir Debug" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "Revertir todo lo que vea" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Invalidar" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Agregar Emblema" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Agregar un emblema" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Actualizar copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Enviar modificaciones al repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "Ver las modificaciones hechas a un archivo" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Mostrar bitácora" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "Mostrar la información de la bitácora de un archivo" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "Agendar un elemento a añadir al repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "Ignorar un elemento" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Ignorar todos los archivos con esta extension" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Actualizar según la versión..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Actualizar un archivo según una versión particular" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Cambiar nombre..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "Agendar cambio de nombre de un elemento del repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "Agendar eliminación de un elemento del repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Revertir un elemento a un estado sin modificaciones" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Marcar un elemento en conflicto como resuelto" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Reubicar..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "Reubicar tu copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "Solicitar bloqueo..." - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "Bloquear elementos localmente" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Levantar bloqueo..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Levantar bloqueo de un elemento" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Limpiar tu copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "Exportar tu copia de trabajo o repositorio sin información de versionamiento" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Crear un repositorio aquí" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Crear un repositorio en una carpeta" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Importar elemento a un repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Copiar un elemento a otra ubicación dentro del repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Cambiar la ubicación del repositorio de una copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Fusionar..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "Un asistente con pasos para fusionar" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Anotar..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Anotar un archivo" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "Ver propiedades de un elemento" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Ayuda" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Ver ayuda" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Ver o modificar la configuración de RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "Acerca de RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 -#: lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Añadido" - -#: lib/vcs/svn/__init__.py:112 -#: lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Copiado" - -#: lib/vcs/svn/__init__.py:113 -#: lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Eliminado" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Restaurado" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "Revertido" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "Revertir fallido" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Resuelto" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Omitido" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Actualizado" - -#: lib/vcs/svn/__init__.py:123 -#: lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Externo" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Modificado" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Reemplazado" - -#: lib/vcs/svn/__init__.py:130 -#: lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Cambiado" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Anotado" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Desbloqueado" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Bloqueo fallido" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Desbloqueo fallido" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "No aplicable" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Desconocido" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Sin cambios" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Faltante" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "Obstruído" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Fusionado" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "En conflicto" - diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/es.po rabbitvcs-0.15.0.5/rabbitvcs/po/es.po --- rabbitvcs-0.13.1/rabbitvcs/po/es.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/es.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1358 +0,0 @@ -# Spanish translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-07-27 07:08+0000\n" -"Last-Translator: xatiya \n" -"Language-Team: Spanish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Hubo modificaciones en su copia de trabajo. Si copia la revisión desde HEAD " -"perderá los cambios." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Debe proporcionar una ruta de destino." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "El campo de revisión es obligatorio" - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Información de revisión no válida" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Rama/etiqueta" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Ejecutando la orden de Rama/Etiqueta..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Rama/etiqueta completada" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Actualizar a revisión" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Actualizando..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Actualización completada" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Se necesita el campo de nuevo nombre" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Renombrar" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Ejecutando la orden de renombrar..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Renombrado completado" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "No se puede anotar un directorio" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Anotado - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Línea" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revisión" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Fecha" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Texto" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "El campo revisión debe ser un entero" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Generando anotación..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Completado" - -#: ui/settings.py:50 -msgid "English" -msgstr "Inglés" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Seleccionar un programa" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "¿Está seguro de que quiere borrar las rutas de su repositorio?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Rutas de repositorio borradas" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "¿Está seguro de que quiere limpiar sus mensajes anteriores?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Mensajes anteriores borrados" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "¿Está seguro de que quiere limpiar su información de autenticación?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Información de autenticación borrada" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Limpiar" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Limpiando..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Limpieza completada" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Se requieren los campos de origen y destino." - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Relocalizar" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Ejecutando orden de relocalización" - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Relocalización completada" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Ruta" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Extensión" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Cargando..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "%d elemento(s) encontrados" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Añadir" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Ejecutando orden de añadir..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "La orden de añadir se ha completado" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Abrir" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Navegar en" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Eliminar" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Añadir a la lista de ignorados" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Importar - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "Se necesita el campo de dirección del repositorio." - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Importar" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Ejecutando importación..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Importación completada" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Bloqueado" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Sí" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Tomar cerrojo" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Ejecutando orden de cerrar..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Clausura completada" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Soltar cerrojo" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Ver diferencias" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Mostrar registro" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Exportar - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "Se requiere la URL del repositorio y la ruta de destino." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Exportar" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Ejecutando orden de exportar..." - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Exportación completada" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Resolver" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Ejecutando orden de resolver..." - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Resolución completada" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Acción" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Tipo MIME" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Mensaje vacío" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Finalizado" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Finalizado" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "La ruta proporcionada no es una copia de trabajo" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Estado del texto" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "Estado de propiedad" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Confirmar" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Ejecutando orden de confirmación..." - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Confirmación competada" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Revertir" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Restaurar" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Mensaje" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Seleccione una carpeta" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "a" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Seleccione un archivo" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "¿Está seguro de que quiere continuar?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "el/los elemento(s) seleccionado(s)" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "La ubicación del repositorio es un campo obligatorio." - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Cambiar" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Ejecutando comando de cambio" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Cambio completo" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Abrir cerrojo" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Ejecutando orden de abrir cerrojo..." - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Apertura de cerrojo completada" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "Ejecutando prueba de mezcla" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "Prueba de mezcla completada" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "Ejecutando orden de mezclar" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Mezcla completada" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Mezclar" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "Obtener repositorio - %s" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "Obtener rep." - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Obteniendo repositorio..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Obtención completada" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Registro - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Copiar desde la ruta" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Copiar desde la revisión" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Cancelado" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N/A" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(sin autor)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "Obeniendo información de registro..." - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Propiedades - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Nombre" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Valor" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Ejecutando orden de reversión..." - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Reversión completada" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Actualizar" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Repositorio creado con éxito" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" -"Ha habido un error al crear el repositorio. Asegúrese de que la carpeta dada " -"está vacía." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Revisión" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "Cambiar detalles" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Desde:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "HEAD" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "A:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Mensajes de notificación" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Añadir mensaje" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "Archivos cambiados (doble-clic para ver diferencias)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Confirmar a:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Mensajes anteriores" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Seleccionar/Deseleccionar todos" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Mostrar archivos no versionados" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Archivos a cerrar" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "" -"Por favor, describa el motivo por el que está cerrando estos archivos" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Archivos cerrados" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Robar los cerrojos" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Propiedades de:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Editar..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Nuevo..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Propiedades" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/ruta:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "De revisión" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "A revisión" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Anotar" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Enlaces" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Información de versión" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "Acerca de" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Autores:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Agradecimientos:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Nuevo nombre:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "Crear copia de" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Repositorio" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Copiar de HEAD" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Copiar de revisión" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Copiar de copia de trabajo" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "Archivo(s) afectado(s)" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Mensaje" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Tabla de revisiones" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Límite:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Registro" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Actualizar" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Mostrando revisiones:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Parar al copiar" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Desde URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "Desde: (URL y revisión a mezclar)" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Opciones" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Intervalo de revisión" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "A: (URL y revisión a mezclar)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "URL a la que mezclar" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Copia de trabajo" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" -"Elija este método si ha hecho algunos cambios a la rama y desea mezclar sus " -"cambios con otra rama." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" -"Elija este método si desea mezclar dos ramas diferentes en su copia de " -"trabajo." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Ignorar ancestros" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Asistente de mezclado" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Mezclar un intervalo de revisiones" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Mezclar dos árboles diferentes" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Registrar sólo la mezcla" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Recursivo" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Comprobar mezcla" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" -"Use el diálogo de registro para seleccionar las revisiones que desea " -"mezclar. O escriba las revisiones manualmente, cada una separada por una " -"coma. Puede especificar un intervalo de revisiones con un guión. \n" -"\n" -"Ejemplo: 4-7,9,11,15-HEAD\n" -"\n" -"Para mezclar todas las revisiones, deje el campo vacío." - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Autenticación" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Mensajes de registro" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Opciones de registro" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Programa usado para navegar en repositorios" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Programa usado para comparar archivos" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "Histórico de URLs" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Navegar..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Limpiar su información de autenticación" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Activar emblemas" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Activar atributos de archivo" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "Activar comprobaciones recursivas de estado" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Programas externos" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "General" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Idioma:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Registro" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "Nivel mínimo de registro" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Número de URLs a recordar" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Número de mensajes a recordar" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Datos guardados" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Preferencias" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Mostrar nueva versión a la derecha" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Tipo:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Petición de limpieza realizada...\n" -"\n" -"¿Empezar limpieza de copia local?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Detalles de certificación" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Editar detalles de propiedad" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Por favor, añada sus detalles de autenticación" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Mensajes anteriores" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" -"¿Está seguro de que quiere eliminar " -"%item%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Aceptar siempre" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Aceptar una vez" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Autenticación" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Comprobar certificado" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Confirmación" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Eliminar confirmación" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Denegar" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Huella:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Equipo:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Emisor:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Usuario:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Contraseña:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Propiedad" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Propiedad:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "Reino:" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Guardar autenticación" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "El/los elemento(s) se enviarán a la papelera de reciclaje." - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "Válido:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Valor:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Destino:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "Omitir externos" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Importar mensaje" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Incluir archivos ignorados" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "Actualizar profundidad" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Cambiar el repositorio de su copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Depurar" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Iniciar/Reiniciar servicio" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Salir de servicio" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Errores" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "Comprobar asincronismo" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Abrir terminal" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Actualizar estado" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Depurar reversión" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "Revertir todo lo que se vea" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Invalidar" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "Forzar a una llamada a invalidate_extension_info()" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Añadir emblema" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Añadir un emblema" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "Obtener una copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Actualizar una copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Confirmar modificaciones al repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "Ver las modificaciones realizadas a un archivo" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Mostrar registro" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "Mostrar información de registro de un archivo" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "Planificar que se añada un elemento al repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "Ignorar un elemento" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Ignorar todos los archivos con esta extensión" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Actualizar a revisión..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Actualizar un archivo a una versión específica" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Renombrar..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "Planificar que un elemento sea renombrado en el repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "Planificar que un elemento sea eliminado del repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Revertir un elemento a su estado no modificado" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Marcar un elemento conflictivo como resuelto" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Reubicar..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "Reubicar copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "Bloquear" - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "Elementos locales bloqueados" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Desblouear..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Desbloquear un elemento" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Limpiar copia de trabajo" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" -"Exportar una copia de trabajo o repositorio sin información de versionado" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Crear aquí un repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Crear un repositorio en una carpeta" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Importar un elemento en un repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Rama/etiqueta..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Copiar un elemento a otra ubicación en el repositorio" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Cambiar..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Cambiar la ubicación de un repositorio de una copia local" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Mezclar..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "Un asistente con pasos para mezclar" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Anotar..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Anotar un archivo" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "Ver las propiedades de un elemento" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Ayuda" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Ver ayuda" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Ver o cambiar las preferencias de RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "Sobre RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Añadido" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Copiado" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Eliminado" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Restaurado" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "Revertido" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "Falló la reversión" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Resuelto" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Ignorado" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Actualizado" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Externo" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Modificado" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Reemplazado" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Cambiado" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Anotado" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Abierto" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Falló bloqueo" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Falló desbloqueo" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "No aplicable" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Desconocido" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Sin cambios" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Perdido" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "Obstruido" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Mezclado" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "Con conflictos" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/fr.po rabbitvcs-0.15.0.5/rabbitvcs/po/fr.po --- rabbitvcs-0.13.1/rabbitvcs/po/fr.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/fr.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1362 +0,0 @@ -# French translations for PACKAGE package -# Traductions françaises du paquet PACKAGE. -# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: 0.12\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-04-25 16:28+0000\n" -"Last-Translator: Thierry Bothorel \n" -"Language-Team: French\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" -"X-Poedit-Country: FRANCE\n" -"X-Poedit-Language: French\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Des modifications ont eu lieu sur votre copie de travail. Si vous copiez " -"depuis la révision HEAD vous perdrez vos changements." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Vous devez spécifier un chemin de destination." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "Le champ 'depuis la révision' est requit." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Information sur la révision invalide" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Branch/tag" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Exécution de la commande Branch/tag..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Branch/tag terminé" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Mettre à jour à la révision" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Mise à jour..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Mise à jour terminée" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Le champ 'nouveau nom' est requit." - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Renommer" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Exécution de la commande de Renommage..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Renommage terminé" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Impossible d'annoter le dossier" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Annoter - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Ligne" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Révision" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Auteur" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Date" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Texte" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "Le champ 'depuis la révision' est requit." - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Génération de l'annotation..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Terminé" - -#: ui/settings.py:50 -msgid "English" -msgstr "Anglais" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Sélectionnez un programme" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Êtes vous sur de vouloir nettoyer les chemins du dépôt ?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Chemins du dépôt nettoyés" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "Êtes vous sur de vouloir nettoyer les messages précédents ?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Messages précèdent nettoyés" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "" -"Êtes vous sur de vouloir nettoyer vos informations d'authentification ?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Informations d'authentification nettoyées" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Nettoyer" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Nettoyage..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Nettoyage terminé" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Les champs 'depuis' et 'URL' sont requis." - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Relocaliser" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Exécution de la commande de Relocalisation..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Relocalisation terminée" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Chemin" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Extension" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Chargement..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "%d objet(s) trouvé(s)" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Ajouter" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Exécution de la commande d'Ajout..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Ajout terminé" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Ouvrir" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Parcourir dans" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Supprimer" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Ajouter à la liste de fichier ignorés" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Importation - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "Le champ 'URL du dépôt' est requit." - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Importer" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Exécution de la commande d'Importation..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Importation terminée" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Verrouillé" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Oui" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Obtenir le verrou" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Exécution de la commande de Verrouillage..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Verrouillage terminé" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Supprimer le verrou" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Voir le Diff" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Consulter le journal" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Exporter - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "Les champs 'URL du dépôt' et 'chemin de destination' sont requis." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Exporter" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Exécution de la commande d'Exportation..." - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Exportation terminée" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Résoudre" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Exécution de la commande de Résolution..." - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Résolution terminée" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Action" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Mime Type" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Message vide" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Terminé" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Terminé" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "Le chemin indiqué n'est pas une copie de travail" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "État du texte" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "État de la propriété" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Envoyer" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Exécution de la commande d'Envoi..." - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Envoi terminé" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Rétablir" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Restaurer" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Message" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Sélectionnez un dossier" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "vers" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Sélectionnez un fichier" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Êtes vous sur de vouloir continuer ?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "le(s) objet(s) sélectionné(s)" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "Le champ 'emplacement du dépôt' est requit." - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Basculement" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Exécution de la commande de Basculement..." - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Basculement terminé" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Déverrouiller" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Exécution de la commande de Déverrouillage..." - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Déverrouillage terminé" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "Exécution du test de Fusion..." - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "Test de fusion terminé" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "Exécution de la commande de Fusion..." - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Fusion terminée" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Fusionner" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Exécution de la commande Checkout..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Checkout terminé" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Journal - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Copier depuis le chemin" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Copier depuis la révision" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Annulé" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N/A" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(pas d'auteur)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "Récupération des informations du journal..." - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Propriétés - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Nom" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Valeur" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Exécution de la commande Revert..." - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Revert terminé" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Mettre à jour" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Dépôt créé avec succès" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" -"Une erreur c'est produite durant la création du dépôt. Veuillez vérifier que " -"le répertoire est vide." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Révision" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "Détails du basculement" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Depuis:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "HEAD" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Pour:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Messages de notification" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Ajouter un message" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "Fichiers modifiés (double-clic pour consulter le diff)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Envoyer vers:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Messages précèdent" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Tous sélectionner/déselectionner" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Montrer les fichiers non versionnés" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Fichiers à verrouiller" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "Merci de décrire pourquoi vous verrouillez ces fichiers" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Verrouiller les fichiers" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Volé le verrou" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Propriétés pour:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Éditer..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Nouveau..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Propriétés" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Chemin:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Depuis la Révision" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "À la révision" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Annoter" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Liens" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Information sur la version" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "À propos" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Auteurs:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Remerciements:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Nouveau nom:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "Créer une copie depuis" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Dépôt" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Copier depuis HEAD" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Copier depuis la révision" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Copier depuis une copie de travail" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "Fichier(s) affecté(s)" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Message" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Tableau de révisions" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Limite:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Journal" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Rafraîchir" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Consulter une révisions:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Stopper à la copie" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Depuis l'URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "Depuis: (URL et révision à fusionner)" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Options" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Gamme de révision" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "Vers: (URL et révision à fusionner)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "Fusionner depuis l'URL" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Copie de travail" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" -"Choisissez cette méthode si vous avez effectué des changements sur une " -"branche et que vous souhaitez fusionner ces changements avec une autre " -"branche." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" -"Choisissez cette méthode si vous souhaitez fusionner deux branches " -"différentes dans votre copie de travail." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Ignorer l'ascendance" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Assistant de fusion" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Fusionner une gamme de révisions" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Fusionner deux arbres différents" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Enregistrer seulement la fusion" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Récursif" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Tester la fusion" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" -"Utilisez le journal de dialogue pour sélectionner la/les révision(s) que " -"vous souhaitez fusionner. Ou écrivez la/les révision(s) manuellement, " -"séparée(s) par des virgules. Vous pouvez spécifier une gamme de révision par " -"un tiret.\n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"Pour fusionner toute les révisions, laissez le champ vide." - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Authentification" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Messages du journal" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Options de journalisation" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Programme utilisé pour parcourir les dépôts" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Programme utilisé pour comparer des fichiers" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "Historique des URL" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Parcourir..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Nettoyer vos informations d'authentification" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Activer les emblèmes" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Activer les attributs de fichier" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "Activer les vérifications récursives des statuts" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Programmes externes" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "Général" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Langage:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Journalisation" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "Niveau minimum à journaliser" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Nombre d'URL à retenir" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Nombre de messages à retenir" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Données sauvegardées" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Paramètres" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Afficher la nouvelle version sur le coté droit" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Type:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Nettoyage demandé....\n" -"\n" -"Commencer le nettoyage de la copie de travail ?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Détails du certificat" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Éditer les détails de la propriété" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Merci d'ajouter vos détails d'authentification" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Messages précédant" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" -"Êtes vous sur de vouloir supprimer %item%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Accepter définitivement" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Accepter temporairement" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Authentification" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Vérifier le certificat" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Confirmation" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Confirmer la suppression" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Interdire" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Emprunte digital:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Hôte:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Émetteur:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Identifiant:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Mot de passe:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Propriété" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Propriété:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Sauvegarder l'authentification" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "Les objets seront envoyés à la corbeille." - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "Valide:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Valeur:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Destination:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Message d'importation" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Inclure les fichiers ignorés" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "Mise à jour en profondeur" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Changer le dépôt de votre copie de travail" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Debug" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Démarrer/Redémarrer le service" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Fermer le service" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Bugs" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Ouvrir un terminal" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Rafraîchir le statut" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Debug inversé" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Invalider" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "Forcer un appel à invalidate_extension_info()" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Ajouter un emblème" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Ajouter un emblème" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "Obtenir une copie de travail" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Mettre à jour une copie de travail" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Envoyer les modifications au dépôt." - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "Voir les modifications faites sur un fichier" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Consulter le journal" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "Montrer le journal d'information d'un fichier" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "Planifier l'ajout d'un objet dans le dépôt" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "Ignorer un objet" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Ignorer tout les fichiers avec cette extension" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Mettre à jour à la révision..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Mettre à jour un fichier vers une version précise" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Renommer..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "Planifier le renommage d'un objet dans le dépôt" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "Planifier la suppression d'un objet dans le dépôt" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Rendre à un objet son état non modifié" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Marquer un conflit sur un objet comme résolu" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Relocatisation..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "Relocaliser votre copie de travail" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "Obtenir le verrou..." - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "Verrouiller localement un objet" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Relâcher le verrou..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Relâcher le verrou d'un objet" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Nettoyer votre copie de travail" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" -"Exporter une copie de travail ou un dépôt sans information de versionnage" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Créer un dépôt ici" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Créer un dépôt dans un dossier" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Importer un objet dans un dépôt" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Branch/tag..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Copier un objet vers un autre emplacement dans le dépôt" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Basculement..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Changer l'emplacement d'une copie de travail" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Fusion..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "Un assistant de fusion en étapes" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Annoter..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Annoter un fichier" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "Consulter les propriétés d'un objet" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Aide" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Consulter l'aide" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Consulter ou modifier les paramètres de RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "À propos de RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Ajouté" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Copié" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Supprimé" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Restauré" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "Revert effectué" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "Revert échoué" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Résolu" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Passé" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "À jour" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Externe" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Modifié" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Remplacé" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Changé" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Annoté" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Déverrouillé" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Impossible de verrouiller" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Impossible de déverrouiller" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "Inapplicable" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Inconnu" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Inchangé" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Manquant" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "Bloqué" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Réuni" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "En conflit" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/hr.po rabbitvcs-0.15.0.5/rabbitvcs/po/hr.po --- rabbitvcs-0.13.1/rabbitvcs/po/hr.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/hr.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1336 +0,0 @@ -# Croatian translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-05-01 13:19+0000\n" -"Last-Translator: Mario Šarić \n" -"Language-Team: Croatian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Trebate odabrati odredišnu stazu." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "Polje izvorne inačice je obavezno." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Grana/oznaka" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Izrada grane/oznake" - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Završena izrada grane/oznake" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Obnovi na inačicu" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Obnavljanje..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Obnovljanje završeno" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Polje novog imena je obavezno" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Preimenuj" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Promjena imena se izvršava..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Promjena imena završena" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Ne možete označiti mapu" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Označi - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Redak" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Inačica" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Datum" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Tekst" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "Polje inačice treba sadržavati broj" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Generiranje bilješke..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Završeno" - -#: ui/settings.py:50 -msgid "English" -msgstr "Engleski" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Odaberite program" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Da li ste sigurni da želite obrisati staze skladišta?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Autentikacijske informacije su obrisane" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Očisti" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Čišćenje..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Završeno čišćenje" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Polja url-ova su obavezna." - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Premjesti" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Izvršava se premještanje..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Završeno premještanje" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Staza" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Nastavak" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Učitavanje..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Pronađeno %d stavaka" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Dodaj" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Dodavanje..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Završeno dodavanje" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Otvori" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Pregledaj" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Obriši" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Dodaj na listu zanemarenih" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Uvezi - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "" - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Uvezi" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Uvoz..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Završen uvoz" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Zaključano" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Da" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Zaključaj" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Zaključavanje..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Zaključano" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "" - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "" - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "" - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "" - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "" - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "" - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "" - -#: ui/properties.py:61 -msgid "Name" -msgstr "" - -#: ui/properties.py:61 -msgid "Value" -msgstr "" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "" - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "" - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "" - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "" - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/it.po rabbitvcs-0.15.0.5/rabbitvcs/po/it.po --- rabbitvcs-0.13.1/rabbitvcs/po/it.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/it.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1358 +0,0 @@ -# Italian translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-03-25 13:57+0000\n" -"Last-Translator: BrainHell \n" -"Language-Team: Italian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Ci sono state modifiche nella tua copia locale. Se copi dalla revisione HEAD " -"perderai le modifiche." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Devi specificare un percorso di destinazione" - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "Il campo da revisione è richiesto." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Informazioni della revisione non valide" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Branch/tag" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Esecuzione del comando Branch/tag..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Branch/tag completato" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Aggiorna alla Revisione" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Aggiornamento..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Aggiornamento completato" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Il campo nuovo nome è richiesto." - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Rinonima" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Esecuzione del comando Rinonima..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Rinonima Completato" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Non posso annotare una cartella" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Annota - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Linea" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revisione" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autore" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Data" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Testo" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "Il campo da revisione deve essere un intero" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Generazione annotazione..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Completato" - -#: ui/settings.py:50 -msgid "English" -msgstr "Inglese" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Seleziona un programma" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Sei sicuro di voler pulire il tuo percorso del repository ?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Percorso del Repository Pulito" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "Sei sicuro di voler pulire il tuo precedente messaggio ?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Messaggio precedente cancellato" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "Sei sicuro di voler pulire le tue informazioni di autenticazione?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Informazioi di Autenticazione Pulite" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Pulizia" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Pulizia in corso..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Pulizia Completata" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "I campi da e url sono richiesti" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Rialloca" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Esecuzione del comando Riallocamento..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Riallocamento completato" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Percorso" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Estensione" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Caricamento..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Trovati %d oggetti" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Aggiungi" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Esecuzione del comando Aggiungi..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Aggiunta completata" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Apri" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Sfoglia" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Cancella" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Aggiungi in ignora" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Importa - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "Il campo Url Repository è richiesto." - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Importa" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Esecuzione del comando Importazione..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Importazione completata" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Bloccato" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Si" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Blocca" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Esecuzione del comando Blocca..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Blocca Completato" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Rimuovi Blocco" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Mostra Differenze" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Visualizza Log" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Esporta - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "" -"I Caampi repository URL e Percorso di destinazione sono entrambi richiesti." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Esporta" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Esecuzione del comando Esportazione..." - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Esportazione Completata" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Risolvi" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Esecuzione del comando Risolvi..." - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Risolvi Copletato" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Azione" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Mime Type" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Messaggio Vuoto" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Finito" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Finiti" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "Il percorso non è la copia di lavoro" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Stato Testo" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "Stato Proprieta" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Commit" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Esecuzione del comando Commit..." - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Commit Completato" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Ripristina" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Ripristina" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Messaggio" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Seleziona una Cartella" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "a" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Seleziona un File" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Sei sicuro di voler continuare ?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "oggetti selezionati" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "La locazione del repository è un campo obbligato" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Scambia" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Esecuzione del comando Scambio..." - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Scambio completato" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Blocca" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Esecuzione del comando Sblocca..." - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Sblocco completato" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "Esecuzione del Merge Test..." - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "Test del Merge Copletato" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "Esecuzione del comando Merge..." - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Merge Completato" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Merge" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "Checkout - %s" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "Checkout" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Esecuzione del comando Checkout..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Checkout completato" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Log - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Copia dal Percorso" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Copia dalla Revisione" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Cancellato" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N/A" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(nessun autore)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "Ricezione informazioni Log..." - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Proprieta - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Nome" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Valore" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Esecuzione del comando Ripristino..." - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Ripristino completato" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Aggiorna" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Repository creato con successo" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" -"C'è stato un errore nella creazione del repository. Verifica che la cartella " -"sia vuota." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Revisione" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "Dettagli Scambio" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Da:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "HEAD" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "A:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Messaggi di Notifica" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Aggiungi Messaggio" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "File cambiati (double-click to see diff)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Commit a:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Messaggi Precedenti" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Selezione / Deseleziona tutti" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Visualizza i file non versionati" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "File da bloccare" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "Descrivi perchè vuoi bloccare questi files" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "File Bloccati" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Ruba il bloccaggio" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Proprieta per:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Modifica..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Nuovo..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Proprieta" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Path" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Dalla Revisione" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "Alla Revisione" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Annota" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Links" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Informazioni della Versione" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "Informazioni su" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Autori:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Grazie:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Nuiovo Nome:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "Crea copia da" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Repository" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Copia da HEAD" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Copia dalla revisione" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Copia dalla copia di lavoro" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "File influenzati" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Messggio" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Tabella Revisioni" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Limiti:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Log" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Aggiorna" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Revisioni:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Ferma su copia" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Da URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "Da: (URL e revisione a merge)" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Opzioni" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Intervallo Revisioni" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "a: (URL e revisione a merge)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "URL sorgente da effettuare il Merge" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Copia di Lavoro" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" -"Seleziona questo metodo se hai fatto qualche cambiamento al branch e vuoi " -"effettuare un merge tra le tue modifiche e un altro branch." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" -"Seleziona questo metodo se vuoi effettuare un merge tra due differenti " -"branch nella tua copia di lavoro." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Ignora Antenati" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Assistente al Merge" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Effettua un Merge per un intervallo di revisioni" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Effettua un merge di due differenti alberi" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Registra solo il merge" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Ricorsivo" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Testa il Merge" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" -"Usa la finestra del log per selezionare le revisioni su cui vuoi effettuare " -"il merge. Oppure scrivi le revisioni manualmente, \n" -"ognuna separata da una virgola. Pure specificare un intervallo con un " -"trattino.\n" -"\n" -"Esempio: 4-7,9,11,15-HEAD\n" -"\n" -"Per eseguire il merge di tutte le revisioni, lascia il box vuoto." - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Autenticazione" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Messaggi del Log" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Opzioni di Log" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Programma usato per sfogliare i repository" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Programma usato per confrontare i file" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "Cronologia URL" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Sfoglia..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Pulisci i tuoi dati di autenticazione" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Abilita Marchi" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Abilita gli attributi dei file" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "Abilita il controllo ricorsivo degli stati" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Programmi Esterni" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "Generale" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Lingua:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Logging" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "Livello minimo per log" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Numero di URL da ricordare" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Numero di messaggi da ricordare" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Dati Salvati" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Opzioni" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Visualizza la nuova versione nel lato destro" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Tipo:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Richiesta di pulizia....\n" -"\n" -"Iniziare una pulizia nella copia di lavoro?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Dettagli del Certificato" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Modifica Proprieta Dettagli" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Aggiungi i tuoi dettagli di autenticazione" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Messaggi Precedenti" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" -"Sei sicuro di voler cancellare %item%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Accetta Sempre" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Accetta una Volta" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Autenticazione" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Controlla Certificato" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Conferma" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Cancella Conferma" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Nega" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Fingerprint:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Host:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Emittente" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Login:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Password:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Proprieta" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Proprieta:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "Dominio:" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Salva Autenticazione" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "Gli oggetti verranno inviati al cestino." - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "Valido:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Valore:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Destinazione:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "Ometti Esterni" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Importa Messaggio" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Includi file ignorati" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "Aggiorna Profondita" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Cambia il repository della tua copia di lavoro" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Debug" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Avvia/Riavvia Servizio" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Termina Servizio" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Bugs" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "Testa Asincronicità" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Apri Shell" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Aggiorna Stato" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Debug Ripristino" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "Ripristina tutto ciò che vedi" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Invalida" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "Forza una chiamata a invalidate_extension_info()" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Aggiungi Marchio" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Aggiungi un marchio" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "Preleva una Copia di Lavoro" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Aggiorna la Copia di Lavoro" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Invia le modifiche al Repository" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "Visualizza le modifiche fatte al file" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Visualizza Log" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "Visualizza il file log" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "Schedula un oggetto da essere aggiunto al repository" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "Ignora un oggetto" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Ignora tutti i file con questa estensione" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Aggiorna alla revisione..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Aggiorna il file alla specifica revisione" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Rinonima..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "Schedula un oggetto da essere rinonimato nel repository" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "Schedula un oggetto da essere cancellato dal repository" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Ripristina gli oggetti nel loro stato non modificato" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Segna un oggetto in conflitto come risolto" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Ricolloca..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "Ricolloca la tua copia di lavoro" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "Blocca..." - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "Blocca gli oggetti localmente" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Sblocca..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Sblocca l'oggetto" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Pulisci la copia di lavoro" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" -"Esporta la copia di lavoro o repository senza le informazioni di versione" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Crea un Repository qua" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Crea un Repositori in una cartella" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Importa un oggetto in un repository" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Branch/tag..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Copia un oggetto in un altra parte del repository" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Scambia..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Cambia la locazione del repository della copia di lavoro" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Merge..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "Procedura guidata per il merge" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Annota..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Annota un file" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "Visualizza le proprieta di un oggetto" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Aiuto" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Visualizza aiuto" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Visualizza o cambia le opzioni di RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "Informazioni su RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Aggiunto" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Copiato" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Cancellato" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Ripristinato" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "Ripristina..." - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "Ripristino fallito" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Risolto" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Saltato" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Aggiornato" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Esterno" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Modificato" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Sostituito" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Cambiato" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Appuntato" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Sbloccato" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Blocco fallito" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Sblocco fallito" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "Inapplicabile" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Sconosciuto" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Invariato" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Mancante" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "Bloccato" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Merged" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "Conflitto" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/ja.po rabbitvcs-0.15.0.5/rabbitvcs/po/ja.po --- rabbitvcs-0.13.1/rabbitvcs/po/ja.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/ja.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1345 +0,0 @@ -# Japanese translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-03-25 06:02+0000\n" -"Last-Translator: YUTA Hayashibe \n" -"Language-Team: Japanese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "作業コピーへの変更がありました.HEADリビジョンからコピーした場合,変更は失われます." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "送り先パスを設定してください." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "元リビジョンを設定してください." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "不正なリビジョン情報" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "ブランチ/タグ" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "ブランチ/タグ コマンドを実行中..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "ブランチ/タグ の完了" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "特定のリビジョンへ更新" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "更新中..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "更新完了" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "新しい名前を入力してください" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "リネーム" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "リネームを実行中..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "リネームの完了" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "ディレクトリに注釈できません" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "注釈 - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "行" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "リビジョン" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "作者" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "日付" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "テキスト" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "元リビジョン番号は整数でなければなりません" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "注釈を作成中..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "完了" - -#: ui/settings.py:50 -msgid "English" -msgstr "英語" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "プログラムを選択" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "本当にレポジトリのパスをクリアしますか?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "レポジトリのパスはクリアされました" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "本当にログメッセージを削除しますか?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "ログメッセージは削除されました" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "本当に認証情報を削除しますか?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "認証情報は削除されました" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "クリーンアップ" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "クリーンアップ中..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "クリーンアップ完了" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "FROMフィールドとURLフィールドの両方に入力してください" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "再配置" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "再配置中..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "再配置完了" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "パス" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "拡張" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "ロード中..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "%d個のアイテムが見つかりました" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "追加" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "追加中..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "追加完了" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "開く" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "参照" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "削除" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "無視リストに追加" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "インポート - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "レポジトリURLを入力してください" - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "インポート" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "インポート中..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "インポート完了" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "ロック" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "はい" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "ロックを取得" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "ロック中..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "ロック完了" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "ロックを削除" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "差分を見る" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "ログを表示" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "エクスポート - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "レポジトリのURLとチェックアウト先の両方の入力が必要です." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "エクスポート" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "エクスポート中..." - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "エクスポート完了" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "解消" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "解消中..." - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "解消完了" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "アクション" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Mimeタイプ" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "空のメッセージ" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "完了" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - 完了" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "与えられたパスはワーキングコピーではありません" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "テキストの状態" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "属性の状態" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "コミット" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "コミット中" - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "コミット完了" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "元に戻す" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "復元" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "メッセージ" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "フォルダを選択" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "to" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "ファイルを選択" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "本当に続けますか?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "選択されたアイテム" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "レポジトリの場所を入力してください" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "切り替え" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "切り替え中..." - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "切り替え完了" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "ロック解除" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "ロック解除中" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "ロック解除完了" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "マージテスト中" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "マージテスト完了" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "マージ中" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "マージ完了" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "マージ" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "チェックアウト - %s" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "チェックアウト" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "チェックアウト中..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "チェックアウト完了" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "ログ - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "パスからコピー" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "リビジョンからコピー" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "キャンセルされました" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N/A" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(作者なし)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "ログ情報の回復..." - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "プロパティ - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "名前" - -#: ui/properties.py:61 -msgid "Value" -msgstr "値" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "元に戻しています" - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "元に戻しました" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "更新" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "レポジトリの作成に成功しました" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "リポジトリ作成中にエラーが発生しました.フォルダが空であるか確認してください." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "リビジョン" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "詳細の切り替え" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "元:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "最新" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "先:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "通知メッセージ" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "メッセージの追加" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "変更されファイル (ダブルクリックで差分表示)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "コミット先:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "以前のメッセージ" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "全て選択/全て非選択" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "バージョン管理外のファイルを表示する" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "ロックすファイル" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "ファイルをロックする理由を入力してください" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "ロックするファイル" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "ロックを横取りする" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "属性:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "編集..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "新規..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "属性" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/パス:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "元リビジョン" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "先リビジョン" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "注釈" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "関連リンク" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "バージョン情報" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "About" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "著者:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "謝辞:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "新しい名前:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "次の場所からコピー" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "レポジトリ" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "HEADからコピー" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "リビジョンからコピー" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "作業コピーからコピー" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "影響を受けるコピー" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "メッセージ" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "リビジョン一覧" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "期限:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "ログ" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "更新" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "表示しているリビジョン:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "コピーが発生したら停止" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "元URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "元: (マージするURLとリビジョン)" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "オプション" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "リビジョンの範囲" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "先: (マージするURLとリビジョン)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "マージ元のURL" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "作業コピー" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "ブランチに変更を加え,それを別のブランチに変更をマージする場合,このメソッドを選択してください." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "2つの異なるブランチを作業コピーにマージする場合,このメソッドを選択してください." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "系統情報を無視する" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "マージアシスタント" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "リビジョンの範囲をマージ" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "異なる2つのツリーをマージ" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "マージのみ記録する" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "再帰的" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "マージをテストする" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" -"マージしたいリビジョンの選択にログダイアログを利用する,もしくは,マージするリビジョンをコンマで区切って入力してください.リビジョンの範囲はハイフンで指定" -"することができます.\n" -"\n" -"例: 4-7,9,11,15-HEAD\n" -"\n" -"すべてのリビジョンをマージするには,入力ボックスを空のままにしてください." - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "認証" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "ログメッセージ" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "ログオプション" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "レポジトリの閲覧に使用するプログラム" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "ファイルの比較に使用するプログラム" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "URL履歴" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "閲覧..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "認証履歴を削除" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "エンブレムを有効にする" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "ファイル属性を有効にする" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "再帰的な状態チェックを有効にする" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "外部プログラム" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "一般" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "言語:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "ログ" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "次のレベル以上を記録する" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "記録するURLの数" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "記録するメッセージの数" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "データの保存" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "設定" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "新しいバージョンを右側に表示する" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "種類:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"クリーンアップが要求されました....\n" -"\n" -"作業コピーをクリーンアップしますか?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "証明書の詳細" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "プロパティの詳細を編集" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "認証の詳細を追加してください" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "以前のメッセージ" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "本当に%iつのアイテムを削除しますか%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "今後受け入れる" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "一度だけ受け入れる" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "認証" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "証明書をチェックする" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "確認" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "削除の確認" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "拒否" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "フィンガープリント:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "ホスト:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "発行者:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "ログイン:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "パスワード:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "属性" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "属性:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "領域:" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "認証を保存する" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "その(それらの)アイテムはゴミ箱へ送られます" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "有効:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "値:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "送り先:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "外部参照を除外する" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "メッセージをインポートする" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "除外ファイルを含める" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "更新" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "作業コピーのレポジトリを変更する" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "デバッグ" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "サービスを開始/再開する" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "サービスを終了する" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "バグ" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "非同期テスト" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "シェルを開く" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "状態を更新" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "無効にする" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "invalidate_extension_info() 呼び出しを強制する" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "エンブレムを追加" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "エンブレムを追加" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "作業コピーをチェックアウト" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "作業コピーを更新" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "レポジトリへの変更をコミット" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "ファイルに対する変更を見る" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "ログを表示" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "ファイルのログ情報を見る" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "レポジトリへのアイテムの追加を予定する" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "アイテムを無視する" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "この拡張子をもつファイル全てを無視する" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "特定のリビジョンへ更新..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "特定のリビジョンへ更新..." - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "リネーム..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "レポジトリへのアイテムのリネームを予定する" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "レポジトリへのアイテムの削除を予定する" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "未変更の状態に戻す" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "競合するアイテムを解決済みにマークする" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "再配置..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "作業コピーを再配置" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "ロックを取得..." - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "ローカルでアイテムをロック" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "ロックを開放..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "アイテム上でロックを開放" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "作業コピーをクリーンアップ" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "バージョン情報無しで,作業コピーまたはレポジトリをエクスポートする" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "ここにレポジトリを作成" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "フォルダ内にレポジトリを作成" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "レポジトリにアイテムをインポート" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "ブランチ/タグ..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "レポジトリ内の別の場所にアイテムをコピーする" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "切り替え..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "作業コピーのレポジトリの場所を変更する" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "マージ..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "マージウィザード" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "注釈..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "ファイルに注釈" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "アイテムのプロパティを見る" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "ヘルプ" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "ヘルプの閲覧" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "RabbitVCSの設定" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "RabbitVCSについて" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "追加" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "コピー" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "削除" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "復元" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "元に戻す" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "元に戻せませんでした" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "解消" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "スキップ" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "更新" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "外部" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "変更" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "置換" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "変更" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "注釈" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "ロック解除" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "ロック失敗" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "ロック解除失敗" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "適用不可" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "不明" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "変更無" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "紛失" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "妨害" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "マージ" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "競合" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/nb.po rabbitvcs-0.15.0.5/rabbitvcs/po/nb.po --- rabbitvcs-0.13.1/rabbitvcs/po/nb.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/nb.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1336 +0,0 @@ -# Norwegian Bokmal translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-03-18 22:32+0000\n" -"Last-Translator: Kenneth Langdalen \n" -"Language-Team: Norwegian Bokmal \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "" - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "" - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "" - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Oppdaterer..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "" - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Dato" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Tekst" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "" - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "" - -#: ui/settings.py:50 -msgid "English" -msgstr "" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Velg et program" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "" - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "" - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "" - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "" - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Åpne" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Slett" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "" - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "" - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Ja" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "" - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "" - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "" - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "" - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "" - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "" - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "" - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Navn" - -#: ui/properties.py:61 -msgid "Value" -msgstr "" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "" - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Fra:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Til:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "" - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Ny..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "Om" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Melding" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Fra URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "" - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Språk:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Passord:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Vis logg" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Hjelp" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Kopiert" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Slettet" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Ukjent" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/nl.po rabbitvcs-0.15.0.5/rabbitvcs/po/nl.po --- rabbitvcs-0.13.1/rabbitvcs/po/nl.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/nl.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1338 +0,0 @@ -# Dutch translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-07-11 00:44+0000\n" -"Last-Translator: JurgenDK \n" -"Language-Team: Dutch \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Er zijn wijzigingen in jouw werkkopie. Als je kopieert van de HEAD revisie " -"gaan deze wijzigingen verloren." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Een doel pad is verplicht." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "De 'vanaf' revisie is verplicht." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Ongeldige revisie informatie" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Branch/tag" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Branch/tag wordt uitgevoerd..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Branch/tag is klaar" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Update naar revisie" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Updaten..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Update is klaar" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Het veld 'nieuwe naam' is verplicht." - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Hernoemen" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Wordt hernoemd..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Hernoemen is klaar" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Regel" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revisie" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Auteur" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Datum" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Tekst" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "De 'vanaf' revisie moet een integer zijn." - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "" - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Klaar" - -#: ui/settings.py:50 -msgid "English" -msgstr "Engels" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Selecteer een programma" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "De repository paden wissen?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Repository paden gewist" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "De vorige berichten wissen?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Vorige berichten gewist" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "Authenticatie informatie wissen?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Authenticatie informatie gewist" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Opruimen" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Wordt opgeruimd..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Opruimen is klaar" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "De 'vanaf' en 'tot' url velden zijn beide verplicht." - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Verplaatsen" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Wordt verplaatst..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Verplaatsen klaar" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Pad" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Extensie" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Laden..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Vond %d item(s)" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Toevoegen" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Wordt toegevoegd..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Toevoegen klaar" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Open" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Browse naar" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Verwijderen" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Voeg toe aan negeer lijst" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Importeer - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "Het repository URL veld is verplicht." - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Importeer" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Wordt geïmporteerd..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Importeren klaar" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Vergrendeld" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Ja" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Vergrendelen" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Wordt vergrendeld..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Vergrendelen is klaar" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Verwijder vergrendeling" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Toon verschillen" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Toon log" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Exporteer - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "De repository URL en doel pad velden zijn beide verplicht." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Exporteren" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Wordt geëxporteerd..." - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Export is klaar" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "" - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Actie" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Mime type" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Leeg bericht" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Klaar" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - klaar" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "Het gegeven pad is geen werk kopie" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Tekst status" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "" - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Terugdraaien" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Terugzetten" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Boodschap" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Selecteer een map" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "naar" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Selecteer een bestand" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Weet je zeker dat je wil verdergaan?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "De geselecteerde items" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Wisselen" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Ontgrendelen" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Samenvoegen" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "" - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Kopiëren van pad" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Kopiëren van revisie" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Geannuleerd" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N.v.t." - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(geen auteur)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "" - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Naam" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Waarde" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "" - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Updaten" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Van:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Naar:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Meldingen" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Boodschap Toevoegen" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Vorige boodschappen" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Te vergrendelen bestanden" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "Beschrijf waarom u deze bestanden vergrendelt" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Bestanden vergrendelen" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Eigenschappen voor:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Bewerken..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Nieuw…" - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Eigenschappen" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Pad:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Van Revisie" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "Naar Revisie" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Annoteren" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Koppelingen" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Versie Informatie" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "Over" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Auteurs:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "" - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/pl.po rabbitvcs-0.15.0.5/rabbitvcs/po/pl.po --- rabbitvcs-0.13.1/rabbitvcs/po/pl.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/pl.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1336 +0,0 @@ -# Polish translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-03-17 22:56+0000\n" -"Last-Translator: Koto \n" -"Language-Team: Polish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Musisz podać ścieżkę docelową." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "" - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Utwórz gałąź/etykietę" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Tworzę gałąź/etykietę..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Utworzono gałąź/etykietę" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Uaktualnij do wersji" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Uaktualnianie..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Uaktualniono." - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Zmień nazwę" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Trwa zmienianie nazwy..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Zmieniono nazwę" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Nie można adnotować katalogu" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Adnotuj - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Linia" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Wersja" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Data" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Tekst" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "" - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "" - -#: ui/settings.py:50 -msgid "English" -msgstr "" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "" - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "" - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "" - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "" - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "" - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "" - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "" - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "" - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "" - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "" - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "" - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "" - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "" - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "" - -#: ui/properties.py:61 -msgid "Name" -msgstr "" - -#: ui/properties.py:61 -msgid "Value" -msgstr "" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "" - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "" - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "" - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "" - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/POTFILES.in rabbitvcs-0.15.0.5/rabbitvcs/po/POTFILES.in --- rabbitvcs-0.13.1/rabbitvcs/po/POTFILES.in 2010-01-25 15:29:08.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/POTFILES.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -# encoding: UTF-8 -ui/about.py -ui/add.py -ui/action.py -ui/annotate.py -ui/applypatch.py -ui/branch.py -ui/browser.py -ui/changes.py -ui/checkmods.py -ui/checkout.py -ui/cleanup.py -ui/commit.py -ui/create.py -ui/createpatch.py -ui/delete.py -ui/dialog.py -ui/diff.py -ui/export.py -ui/ignore.py -ui/import.py -ui/lock.py -ui/log.py -ui/merge.py -ui/properties.py -ui/property_editor.py -ui/relocate.py -ui/rename.py -ui/resolve.py -ui/revert.py -ui/revprops.py -ui/settings.py -ui/switch.py -ui/unlock.py -ui/update.py -ui/updateto.py -ui/wraplabel.py -ui/widget.py -ui/glade/about.glade.h -ui/glade/add.glade.h -ui/glade/annotate.glade.h -ui/glade/branch.glade.h -ui/glade/browser.glade.h -ui/glade/changes.glade.h -ui/glade/checkmods.glade.h -ui/glade/checkout.glade.h -ui/glade/cleanup.glade.h -ui/glade/commit.glade.h -ui/glade/createpatch.glade.h -ui/glade/dialogs.glade.h -ui/glade/import.glade.h -ui/glade/lock.glade.h -ui/glade/log.glade.h -ui/glade/merge.glade.h -ui/glade/notification.glade.h -ui/glade/properties.glade.h -ui/glade/property_editor.glade.h -ui/glade/relocate.glade.h -ui/glade/settings.glade.h -ui/glade/switch.glade.h -ui/glade/update.glade.h -../clients/nautilus/RabbitVCS.py -../clients/thunar/RabbitVCS.py -lib/vcs/svn/__init__.py -lib/helper.py -lib/contextmenuitems.py diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/pt_BR.po rabbitvcs-0.15.0.5/rabbitvcs/po/pt_BR.po --- rabbitvcs-0.13.1/rabbitvcs/po/pt_BR.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/pt_BR.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1358 +0,0 @@ -# Brazilian Portuguese translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-06-27 16:10+0000\n" -"Last-Translator: Rodrigo Valente \n" -"Language-Team: Brazilian Portuguese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Já houve modificações na sua cópia de trabalho. Se você copiar a revisão " -"atual (HEAD) você perderá suas alterações." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Você deve informar uma pasta de destino." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "O campo de origem da revisão é necessário." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Informação de revisão inválida" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Branch/tag" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Rodando comando Branch/tag..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Branch/tag Completada" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Atualizando para Revisão" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Atualizando..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Atualização Completada" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "O nome do novo campo é requerido" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Renomear" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Rodando Comando Renomear.." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Renomear Completado" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Não é possível comentar um diretório" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Comentar - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Linha" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revisão" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Data" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Texto" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "O campo revisão de origem deve um inteiro" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Gerando comentário..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Concluído" - -#: ui/settings.py:50 -msgid "English" -msgstr "Inglês" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Selecione um programa" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Tem certeza de que deseja apagar seu caminho do repositório?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Caminho do repositório apagado" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "Tem certeza que deseja apagar sua mensagem anterior?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Mensagem anterior apagada" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "Tem certeza que deseja apagar sua informação de autenticação?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Informação de autenticação apagada" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Limpeza" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Limpando..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Limpeza Concluída" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Os campos origem e url são necessários." - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Realocar" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Rodando Comando Realocar" - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Relocar Concluído" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Caminho" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Extensão" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Carregando..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Encontrado(s) %d item(ns)" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Adicionar" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Rodando Comando Adicionar..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Adicionar Concluído" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Abrir" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Navegue para" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Apagar" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Adicionar à lista de ignorados" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Importado - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "O campo URL do repositório é necessário." - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Importar" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Rodando Comando Importar..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Importar Concluído" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Bloqueado" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Sim" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Bloquear" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Rodando Comando Bloquear" - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Bloquear Concluído" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Remover Bloqueio" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Visualizar Diff" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Mostrar Log" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Exportado - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "Os campos URL do repositório e caminho de destino são necessários." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Exportar" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Rodando Comando Exportar" - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Exportar Concluído" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Resolver" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Rodando Comando Resolver" - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Resolver Concluído" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Ação" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Tipo Mime" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Mensagem Vazia" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Finalizado" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Finalizado" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "O caminho informado não é de uma cópia de trabalho" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Texto de Status" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "Propriedades de Status" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Enviar" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Rodando Comando Enviar..." - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Enviar Concluído" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Reverter" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Restaurar" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Mensagem" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Selecionar um diretório" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "para" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Selecionar um arquivo" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Tem certeza que deseja continuar?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "O(s) item(ns) selecionado(s)" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "O campo repositório local é necessário" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Trocar" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Rodando Comando Trocar" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Trocar Concluído" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Desbloquear" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Rodando Comando Desbloquear" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Desbloquear Completado" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "Rodando Teste de Mesclagem" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "Teste de Mesclagem Concluído" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "Rodando Comando Mesclar" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Mesclar Concluído" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Mesclar" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "Obter - %s" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "Obter" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Rodando Comando Obter..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Obter Concluído" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Log - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Copiar do Caminho" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Copiar da Revisão" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Cancelado" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N/D" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(sem autor)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "Recuperando Informação de Log..." - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Propriedades - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Nome" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Valor" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Rodando Comando Reverter..." - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Reverter Concluído" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Atualizar" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Repositório criado com sucesso" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" -"Ocorreu um erro criando o repositório. Tenha certeza que o diretório " -"informando está vazio." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Revisão" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "Mudar Detalhes" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "De:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "HEAD" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Para:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Mensagens de Notificação" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Adicionar Mensagem" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "Arquivos Alterados (duplo clique para ver o diff)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Enviar para:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Mensagem Anterior" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Selecionar / Deselecionar tudo" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Mostrar arquivos não versionados" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Arquivos para bloquear" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "" -"Por favor, descreva porque você está bloqueando esses arquivos" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Bloquear Arquivos" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Roubar os bloqueios" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Propriedades para:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Editar..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Novo..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Propriedades" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Caminho:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Da Revisão" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "Para Revisão" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Comentar" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Links" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Informações da Versão" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "Sobre" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Autores:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Agradecimentos:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Novo Nome:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "\t Criar cópia de" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Repositório" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Copiar de HEAD" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Copiar da revisão" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Copiar da cópia de trabalho" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "Arquivo(s) Afetado(s)" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Mensagem" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Tabela de Revisões" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Limite:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Log" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Atualizar" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Mostrando Revisões:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Parar em cópia" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Da URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "De: (URL e revisão para mesclagem)" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Opções" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Intervalo de Revisões" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "Para: (URL e revisão para mesclagem)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "URL de origem para mesclagem" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Cópia de Trabalho" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" -"Escolha este método se você fez algumas alterações para um branch e deseja " -"mesclar suas alterações com outro branch." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" -"Escolha este método se você deseja mesclar dois diferentes branches em sua " -"cópia de trabalho." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Ignorar ancestral" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Assistente de Mesclagem" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Mesclar um intervalo de revisões" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Mesclar duas árvores diferentes" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Somente gravar a mesclagem" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Recursivo" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Testar Mesclagem" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" -"Utilize o diálogo de log para selecionar as revisões que você deseja " -"mesclar. Ou, escreve manualmente as revisões, separando por vírgula. Você " -"pode especificar um intervalo de visões utilizando um traço.\n" -"\n" -"Examplo: 4-7,9,11,15-HEAD\n" -"\n" -"Para mesclar todas as revisões, deixa a caixa vazia." - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Autenticação" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Mensagens de Log" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Opções de Log" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Programa utilizado para navegar nos repositórios" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Programa utilizado para comparar arquivos" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "Histórico de URL(s)" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Procurar..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Apagar sua informação de autenticação" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Ativar emblemas" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Ativar atributos de arquivo" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "Ativar checagem recursiva de status" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Programas Externos" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "Geral" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Idioma:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Gravando Log" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "Nível médio para log" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Número de URLs para se lembrar" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Número de mensagens para se lembrar" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Data Salva" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Configurações" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Mostrar a nova versão do lado direito" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Tipo:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Limpeza Solicitada ....\n" -"\n" -"Começar a limpeza da cópia de trabalho?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Detalhes do Certificado" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Editar Detalhes da Propriedade" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Por favor, adicionar detalhes da sua autenticação" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Mensagem Anterior" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" -"Tem certeza que deseja deleter %item%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Aceitar Sempre" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Aceitar uma vez" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Autenticação" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Verificar Certificado" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Confirmação" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Confirmação de Remoção" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Negar" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Impressão digital:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Servidor:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Emissor:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Login:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Senha:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Propriedade" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Propriedade:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "Domínio:" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Salvar Autenticação" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "O(s) item(ns) pode(m) ser enviado(s) para lixeira." - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "Validar:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Valor:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Destino:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "Omitir os Externos" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Importar Mensagem" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Incluir arquivos ignorados" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "Atualizar Profundidade" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Alterar o repositório da sua cópia de trabalho" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Depurar" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Iniciar/Reiniciar Serviço" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Sair do Serviço" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Bugs" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "Teste de Sincronização" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Abrir Shell" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Atualizar Status" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Reverter Debug" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "Reverter tudo que ve" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Invalidar" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "Forçar uma chamada invalidate_extension_info()" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Adicionar Emblema" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Adicionar um emblema" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "Obter uma cópia de trabalho" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Atualizar uma cópia de trabalho" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Enviar modificações para o repositório" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "Visualizar as alterações feitas em um arquivo" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Mostrar Log" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "Mostrar as informações de um arquivo de log" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "Agendar um item para ser adicionado ao repositório" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "Ignorar um item" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Ignorar todos os arquivos com esta extensão" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Atualizar para revisão..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Atualizar um arquivo para uma revisão específica" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Renomear..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "Agendar um item para ser renomeado no repositório" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "Agendar um item para ser deletado do repositório" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Reverter um item para seu estado inalterado" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Marcar um item conflitante como resolvido" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Realocar..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "Realocar sua cópia de trabalho" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "Bloquear..." - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "Itens bloqueados localmente" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Liberar Bloqueio..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Liberar bloqueio de um item" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Limpeza de cópia de trabalho" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" -"Exportar uma cópia de trabalho ou repositório sem informações de " -"versionamento" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Criar Repositório aqui" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Criar um repositório no diretório" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Importar um item em um respositório" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Branch/tag..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Copiar um item para outro lugar no repositório" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Mudar..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Mudar o lugar do repositório de um cópia de trabalho" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Mesclar..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "Um assistente com passos para mesclar" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Comentário..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Comentar um arquivo" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "Visualizar as propriedades de um item" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Ajuda" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Visualizar ajudar" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Visualizar ou alterar as configurações do RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "Sobre o RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Adicionado" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Copiado" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Deletado" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Restaurado" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "Revertido" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "Falha ao Reverter" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Resolvido" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Ignorado" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Atualizado" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Externo" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Modificado" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Substituído" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Alterado" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Comentado" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Desbloqueado" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Falha ao Bloquear" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Falha ao Desbloquear" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "Inaplicável" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Desconhecido" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Não modificado" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Faltando" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "Obstruído" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Mesclado" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "Conflitante" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/RabbitVCS.pot rabbitvcs-0.15.0.5/rabbitvcs/po/RabbitVCS.pot --- rabbitvcs-0.13.1/rabbitvcs/po/RabbitVCS.pot 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/RabbitVCS.pot 1970-01-01 00:00:00.000000000 +0000 @@ -1,1784 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-27 10:44-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: ui/add.py:71 ui/action.py:99 ui/browser.py:82 ui/changes.py:109 -#: ui/checkmods.py:67 ui/commit.py:79 ui/createpatch.py:87 ui/lock.py:72 -#: ui/log.py:96 ui/resolve.py:60 ui/revert.py:60 ui/unlock.py:60 -msgid "Path" -msgstr "" - -#: ui/add.py:71 ui/checkmods.py:67 ui/commit.py:79 ui/createpatch.py:87 -#: ui/lock.py:72 ui/resolve.py:60 ui/revert.py:60 ui/unlock.py:60 -msgid "Extension" -msgstr "" - -#: ui/add.py:94 ui/commit.py:120 ui/lock.py:115 ui/unlock.py:84 -#: ui/glade/dialogs.glade.h:25 -msgid "Loading..." -msgstr "" - -#: ui/add.py:97 ui/commit.py:127 ui/lock.py:118 ui/unlock.py:105 -#, python-format -msgid "Found %d item(s)" -msgstr "" - -#: ui/add.py:155 ui/glade/add.glade.h:1 lib/contextmenuitems.py:361 -msgid "Add" -msgstr "" - -#: ui/add.py:156 -msgid "Running Add Command..." -msgstr "" - -#: ui/add.py:158 -msgid "Completed Add" -msgstr "" - -#: ui/action.py:99 ui/log.py:96 -msgid "Action" -msgstr "" - -#: ui/action.py:99 -msgid "Mime Type" -msgstr "" - -#: ui/action.py:331 -msgid "Finished" -msgstr "" - -#: ui/action.py:335 -#, python-format -msgid "%s - Finished" -msgstr "" - -#: ui/action.py:358 -msgid "Log Message" -msgstr "" - -#: ui/annotate.py:57 -msgid "Cannot annotate a directory" -msgstr "" - -#: ui/annotate.py:63 -#, python-format -msgid "Annotate - %s" -msgstr "" - -#: ui/annotate.py:78 -msgid "Line" -msgstr "" - -#: ui/annotate.py:78 ui/browser.py:82 ui/checkmods.py:69 ui/log.py:85 -#: ui/glade/changes.glade.h:6 ui/glade/merge.glade.h:17 -#: ../clients/nautilus/RabbitVCS.py:195 -msgid "Revision" -msgstr "" - -#: ui/annotate.py:78 ui/browser.py:82 ui/checkmods.py:69 ui/log.py:85 -#: ../clients/nautilus/RabbitVCS.py:207 -msgid "Author" -msgstr "" - -#: ui/annotate.py:79 ui/browser.py:82 ui/dialog.py:54 ui/log.py:86 -msgid "Date" -msgstr "" - -#: ui/annotate.py:79 -msgid "Text" -msgstr "" - -#: ui/annotate.py:121 -msgid "The from revision field must be an integer" -msgstr "" - -#: ui/applypatch.py:57 ui/applypatch.py:107 -msgid "Apply Patch" -msgstr "" - -#: ui/applypatch.py:74 -msgid "Apply Patch To Directory..." -msgstr "" - -#: ui/applypatch.py:108 -msgid "Applying Patch File..." -msgstr "" - -#: ui/applypatch.py:110 -msgid "Patch File Applied" -msgstr "" - -#: ui/branch.py:97 -msgid "You must supply a destination path." -msgstr "" - -#: ui/branch.py:113 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "" - -#: ui/branch.py:114 -msgid "Running Branch/tag Command..." -msgstr "" - -#: ui/branch.py:116 -msgid "Completed Branch/tag" -msgstr "" - -#: ui/browser.py:82 -msgid "Size" -msgstr "" - -#: ui/browser.py:311 -msgid "Create folder..." -msgstr "" - -#: ui/browser.py:316 -msgid "Copy to..." -msgstr "" - -#: ui/browser.py:321 -msgid "Copy URL to clipboard" -msgstr "" - -#: ui/browser.py:326 -msgid "Move to..." -msgstr "" - -#: ui/browser.py:448 ui/rename.py:46 ui/rename.py:64 -msgid "Rename" -msgstr "" - -#: ui/browser.py:448 ui/rename.py:46 ui/glade/dialogs.glade.h:28 -msgid "New Name:" -msgstr "" - -#: ui/browser.py:509 -msgid "Where do you want to copy the selection?" -msgstr "" - -#: ui/browser.py:510 ui/browser.py:539 -msgid "New Location:" -msgstr "" - -#: ui/browser.py:538 -msgid "Where do you want to move the selection?" -msgstr "" - -#: ui/changes.py:50 -msgid "More Actions..." -msgstr "" - -#: ui/changes.py:51 ui/changes.py:368 ui/checkmods.py:160 -msgid "View unified diff" -msgstr "" - -#: ui/changes.py:109 -msgid "Change" -msgstr "" - -#: ui/changes.py:109 -msgid "Property Change" -msgstr "" - -#: ui/changes.py:271 ui/lock.py:126 -msgid "Yes" -msgstr "" - -#: ui/changes.py:271 -msgid "No" -msgstr "" - -#: ui/changes.py:358 -msgid "Open from first revision" -msgstr "" - -#: ui/changes.py:363 -msgid "Open from second revision" -msgstr "" - -#: ui/changes.py:373 ui/checkmods.py:165 -msgid "Compare side by side" -msgstr "" - -#: ui/checkmods.py:68 ui/commit.py:80 ui/createpatch.py:88 ui/resolve.py:61 -#: ui/revert.py:61 -msgid "Text Status" -msgstr "" - -#: ui/checkmods.py:68 ui/commit.py:80 ui/createpatch.py:88 ui/resolve.py:61 -#: ui/revert.py:61 -msgid "Property Status" -msgstr "" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "" - -#: ui/checkout.py:105 ui/export.py:69 -msgid "The repository URL and destination path are both required fields." -msgstr "" - -#: ui/checkout.py:119 ui/glade/checkout.glade.h:5 -msgid "Checkout" -msgstr "" - -#: ui/checkout.py:120 -msgid "Running Checkout Command..." -msgstr "" - -#: ui/checkout.py:130 -msgid "Completed Checkout" -msgstr "" - -#: ui/cleanup.py:54 lib/contextmenuitems.py:425 -msgid "Cleanup" -msgstr "" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "" - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "" - -#: ui/commit.py:222 ui/glade/commit.glade.h:4 lib/contextmenuitems.py:284 -msgid "Commit" -msgstr "" - -#: ui/commit.py:223 -msgid "Running Commit Command..." -msgstr "" - -#: ui/commit.py:229 -msgid "Completed Commit" -msgstr "" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" - -#: ui/createpatch.py:68 ui/createpatch.py:110 ui/createpatch.py:151 -#: ui/glade/createpatch.glade.h:2 -msgid "Create Patch" -msgstr "" - -#: ui/createpatch.py:80 -msgid "The given path is not a working copy" -msgstr "" - -#: ui/createpatch.py:152 -msgid "Creating Patch File..." -msgstr "" - -#: ui/createpatch.py:176 -msgid "Patch File Created" -msgstr "" - -#: ui/dialog.py:38 -#, python-format -msgid "" -"An error has occurred in the RabbitVCS Nautilus extension. Please contact " -"the RabbitVCS team with the error details listed below:" -msgstr "" - -#: ui/dialog.py:54 ui/log.py:86 ui/glade/dialogs.glade.h:27 -msgid "Message" -msgstr "" - -#: ui/dialog.py:95 -msgid "Select a Folder" -msgstr "" - -#: ui/dialog.py:124 ui/glade/log.glade.h:11 -msgid "to" -msgstr "" - -#: ui/dialog.py:247 -msgid "Select a File" -msgstr "" - -#: ui/dialog.py:266 -msgid "Save As..." -msgstr "" - -#: ui/dialog.py:285 ui/glade/dialogs.glade.h:15 -msgid "Are you sure you want to continue?" -msgstr "" - -#: ui/dialog.py:313 -msgid "the selected item(s)" -msgstr "" - -#: ui/dialog.py:375 -msgid "Added a folder to the repository" -msgstr "" - -#: ui/diff.py:138 -msgid "View diff as side-by-side comparison" -msgstr "" - -#: ui/export.py:42 -#, python-format -msgid "Export - %s" -msgstr "" - -#: ui/export.py:92 -msgid "Export" -msgstr "" - -#: ui/export.py:93 -msgid "Running Export Command..." -msgstr "" - -#: ui/export.py:104 -msgid "Completed Export" -msgstr "" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "" - -#: ui/import.py:80 ui/glade/import.glade.h:3 lib/contextmenuitems.py:443 -msgid "Import" -msgstr "" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "" - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "" - -#: ui/lock.py:73 lib/vcs/svn/__init__.py:271 -msgid "Locked" -msgstr "" - -#: ui/lock.py:167 -msgid "Get Lock" -msgstr "" - -#: ui/lock.py:168 -msgid "Running Lock Command..." -msgstr "" - -#: ui/lock.py:177 -msgid "Completed Lock" -msgstr "" - -#: ui/log.py:68 -#, python-format -msgid "Log - %s" -msgstr "" - -#: ui/log.py:97 -msgid "Copy From Path" -msgstr "" - -#: ui/log.py:97 -msgid "Copy From Revision" -msgstr "" - -#: ui/log.py:273 ui/log.py:274 ui/glade/log.glade.h:7 -msgid "N/A" -msgstr "" - -#: ui/log.py:314 -msgid "(no author)" -msgstr "" - -#: ui/log.py:457 -msgid "View diff against working copy" -msgstr "" - -#: ui/log.py:462 -msgid "Compare with working copy" -msgstr "" - -#: ui/log.py:467 lib/contextmenuitems.py:325 -msgid "View diff against previous revision" -msgstr "" - -#: ui/log.py:472 lib/contextmenuitems.py:343 -msgid "Compare with previous revision" -msgstr "" - -#: ui/log.py:477 -msgid "View diff between revisions" -msgstr "" - -#: ui/log.py:482 -msgid "Compare revisions" -msgstr "" - -#: ui/log.py:487 -msgid "Show changes from previous revision" -msgstr "" - -#: ui/log.py:492 -msgid "Show changes between revisions" -msgstr "" - -#: ui/log.py:497 ui/log.py:501 -msgid "Edit author..." -msgstr "" - -#: ui/log.py:505 -msgid "Edit log message..." -msgstr "" - -#: ui/log.py:509 -msgid "Edit revision properties..." -msgstr "" - -#: ui/log.py:711 -msgid "Edit author" -msgstr "" - -#: ui/log.py:723 -msgid "Edit log message" -msgstr "" - -#: ui/merge.py:86 -msgid "Running Merge Test" -msgstr "" - -#: ui/merge.py:87 -msgid "Completed Merge Test" -msgstr "" - -#: ui/merge.py:89 -msgid "Running Merge Command" -msgstr "" - -#: ui/merge.py:90 -msgid "Completed Merge" -msgstr "" - -#: ui/merge.py:101 -msgid "Merge" -msgstr "" - -#: ui/properties.py:55 -#, python-format -msgid "Properties - %s" -msgstr "" - -#: ui/properties.py:63 ui/property_editor.py:104 -msgid "Name" -msgstr "" - -#: ui/properties.py:63 ui/property_editor.py:104 -msgid "Value" -msgstr "" - -#: ui/properties.py:157 ui/property_editor.py:137 ui/revprops.py:59 -msgid "Unable to retrieve properties list" -msgstr "" - -#: ui/properties.py:178 -msgid "There was a problem saving your properties." -msgstr "" - -#: ui/property_editor.py:55 -msgid "" -"Note: changes to properties are applied instantly. You may review and " -"undo changes using the context menu for each item.\n" -msgstr "" - -#: ui/property_editor.py:60 -msgid "" -"Do you want to delete the selected properties from all files and " -"subdirectories\n" -"beneath this directory?" -msgstr "" - -#: ui/property_editor.py:93 -msgid "File is not under version control." -msgstr "" - -#: ui/property_editor.py:104 -msgid "Reserved" -msgstr "" - -#: ui/property_editor.py:104 ../clients/nautilus/RabbitVCS.py:189 -msgid "Status" -msgstr "" - -#: ui/property_editor.py:197 -msgid "Unable to set new value for property." -msgstr "" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "" - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "" - -#: ui/rename.py:54 -msgid "The new name field is required" -msgstr "" - -#: ui/rename.py:65 -msgid "Running Rename Command..." -msgstr "" - -#: ui/rename.py:71 -msgid "Completed Rename" -msgstr "" - -#: ui/resolve.py:48 ui/resolve.py:101 lib/contextmenuitems.py:396 -msgid "Resolve" -msgstr "" - -#: ui/resolve.py:102 -msgid "Running Resolve Command..." -msgstr "" - -#: ui/resolve.py:105 -msgid "Completed Resolve" -msgstr "" - -#: ui/revert.py:48 ui/revert.py:101 lib/contextmenuitems.py:390 -msgid "Revert" -msgstr "" - -#: ui/revert.py:102 -msgid "Running Revert Command..." -msgstr "" - -#: ui/revert.py:104 -msgid "Completed Revert" -msgstr "" - -#: ui/settings.py:50 -msgid "English" -msgstr "" - -#: ui/settings.py:167 ui/settings.py:176 -msgid "Select a program" -msgstr "" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your repository paths?" -msgstr "" - -#: ui/settings.py:192 -msgid "Repository paths cleared" -msgstr "" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your previous messages?" -msgstr "" - -#: ui/settings.py:203 -msgid "Previous messages cleared" -msgstr "" - -#: ui/settings.py:207 -msgid "Are you sure you want to clear your authentication information?" -msgstr "" - -#: ui/settings.py:224 -msgid "Authentication information cleared" -msgstr "" - -#: ui/switch.py:70 -msgid "The repository location is a required field." -msgstr "" - -#: ui/switch.py:80 ui/glade/switch.glade.h:4 -msgid "Switch" -msgstr "" - -#: ui/switch.py:81 -msgid "Running Switch Command..." -msgstr "" - -#: ui/switch.py:89 -msgid "Completed Switch" -msgstr "" - -#: ui/unlock.py:48 ui/unlock.py:123 -msgid "Unlock" -msgstr "" - -#: ui/unlock.py:124 -msgid "Running Unlock Command..." -msgstr "" - -#: ui/unlock.py:127 -msgid "Completed Unlock" -msgstr "" - -#: ui/update.py:53 ui/glade/update.glade.h:5 lib/contextmenuitems.py:278 -msgid "Update" -msgstr "" - -#: ui/update.py:54 ui/updateto.py:75 -msgid "Updating..." -msgstr "" - -#: ui/update.py:56 ui/updateto.py:83 -msgid "Completed Update" -msgstr "" - -#: ui/updateto.py:74 -msgid "Update To Revision" -msgstr "" - -#: ui/widget.py:603 ui/glade/merge.glade.h:10 -msgid "HEAD" -msgstr "" - -#: ui/widget.py:604 -msgid "Number" -msgstr "" - -#: ui/widget.py:605 -msgid "Working Copy" -msgstr "" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/about.glade.h:4 lib/contextmenuitems.py:507 -msgid "About" -msgstr "" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "" - -#: ui/glade/add.glade.h:2 ui/glade/commit.glade.h:6 -#: ui/glade/createpatch.glade.h:3 ui/glade/lock.glade.h:5 -msgid "Select / Deselect all" -msgstr "" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "" - -#: ui/glade/branch.glade.h:1 ui/glade/commit.glade.h:1 -#: ui/glade/dialogs.glade.h:1 -msgid "Add Message" -msgstr "" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "" - -#: ui/glade/branch.glade.h:5 ui/glade/relocate.glade.h:2 -#: ui/glade/switch.glade.h:3 -msgid "From:" -msgstr "" - -#: ui/glade/branch.glade.h:6 ui/glade/commit.glade.h:5 -#: ui/glade/dialogs.glade.h:31 ui/glade/import.glade.h:5 -#: ui/glade/lock.glade.h:4 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/branch.glade.h:7 ui/glade/relocate.glade.h:4 -#: ui/glade/switch.glade.h:5 -msgid "To:" -msgstr "" - -#: ui/glade/browser.glade.h:1 ui/glade/changes.glade.h:5 -msgid "Load/Refresh" -msgstr "" - -#: ui/glade/browser.glade.h:2 lib/contextmenuitems.py:295 -msgid "Repository Browser" -msgstr "" - -#: ui/glade/browser.glade.h:3 -msgid "Revision:" -msgstr "" - -#: ui/glade/browser.glade.h:4 ui/glade/checkout.glade.h:9 -msgid "URL:" -msgstr "" - -#: ui/glade/changes.glade.h:1 -msgid "Differences (double-click to compare with base)" -msgstr "" - -#: ui/glade/changes.glade.h:2 -msgid "First:" -msgstr "" - -#: ui/glade/changes.glade.h:3 -msgid "Second:" -msgstr "" - -#: ui/glade/changes.glade.h:4 -msgid "Changes" -msgstr "" - -#: ui/glade/changes.glade.h:7 ../clients/nautilus/RabbitVCS.py:201 -msgid "URL" -msgstr "" - -#: ui/glade/checkmods.glade.h:1 -msgid "Check for Modifications" -msgstr "" - -#: ui/glade/checkout.glade.h:1 ui/glade/merge.glade.h:3 -msgid "Options" -msgstr "" - -#: ui/glade/checkout.glade.h:3 ui/glade/switch.glade.h:1 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "" - -#: ui/glade/checkout.glade.h:4 ui/glade/settings.glade.h:8 -msgid "Browse..." -msgstr "" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "" - -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:8 ui/glade/merge.glade.h:16 -#: ui/glade/update.glade.h:4 -msgid "Recursive" -msgstr "" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" - -#: ui/glade/commit.glade.h:2 ui/glade/createpatch.glade.h:1 -msgid "Changed Files (double-click to compare with base)" -msgstr "" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "" - -#: ui/glade/dialogs.glade.h:2 -msgid "Certificate Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:3 -msgid "Edit Property Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:4 -msgid "Folder Name" -msgstr "" - -#: ui/glade/dialogs.glade.h:5 ui/glade/log.glade.h:3 -msgid "Message" -msgstr "" - -#: ui/glade/dialogs.glade.h:6 -msgid "Please add your authentication details" -msgstr "" - -#: ui/glade/dialogs.glade.h:7 -msgid "Please provide your ssl certification file" -msgstr "" - -#: ui/glade/dialogs.glade.h:8 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/dialogs.glade.h:10 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" - -#: ui/glade/dialogs.glade.h:11 -msgid "RabbitVCS Error" -msgstr "" - -#: ui/glade/dialogs.glade.h:12 -msgid "Accept Forever" -msgstr "" - -#: ui/glade/dialogs.glade.h:13 -msgid "Accept Once" -msgstr "" - -#: ui/glade/dialogs.glade.h:14 -msgid "Apply property recursively" -msgstr "" - -#: ui/glade/dialogs.glade.h:16 -msgid "Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:17 -msgid "Check Certificate" -msgstr "" - -#: ui/glade/dialogs.glade.h:18 -msgid "Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:19 -msgid "Create Folder..." -msgstr "" - -#: ui/glade/dialogs.glade.h:20 -msgid "Delete Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:21 -msgid "Deny" -msgstr "" - -#: ui/glade/dialogs.glade.h:22 -msgid "Fingerprint:" -msgstr "" - -#: ui/glade/dialogs.glade.h:23 -msgid "Host:" -msgstr "" - -#: ui/glade/dialogs.glade.h:24 -msgid "Issuer:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Login:" -msgstr "" - -#: ui/glade/dialogs.glade.h:29 -msgid "Password:" -msgstr "" - -#: ui/glade/dialogs.glade.h:30 -msgid "Path:" -msgstr "" - -#: ui/glade/dialogs.glade.h:32 -msgid "Property" -msgstr "" - -#: ui/glade/dialogs.glade.h:33 -msgid "Property:" -msgstr "" - -#: ui/glade/dialogs.glade.h:34 -msgid "RabbitVCS Error" -msgstr "" - -#: ui/glade/dialogs.glade.h:35 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:36 -msgid "SSL Client Certification" -msgstr "" - -#: ui/glade/dialogs.glade.h:37 -msgid "Save Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:38 -msgid "Text Change" -msgstr "" - -#: ui/glade/dialogs.glade.h:39 -msgid "The item(s) will be sent to the trash can." -msgstr "" - -#: ui/glade/dialogs.glade.h:40 -msgid "Valid:" -msgstr "" - -#: ui/glade/dialogs.glade.h:41 -msgid "Value:" -msgstr "" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s) (double-click to compare with base)" -msgstr "" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "" - -#: ui/glade/log.glade.h:6 -msgid "Log" -msgstr "" - -#: ui/glade/log.glade.h:8 -msgid "Refresh" -msgstr "" - -#: ui/glade/log.glade.h:9 -msgid "Showing Revisions:" -msgstr "" - -#: ui/glade/log.glade.h:10 -msgid "Stop on copy" -msgstr "" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "" - -#: ui/glade/merge.glade.h:18 -msgid "Show log" -msgstr "" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "" - -#: ui/glade/properties.glade.h:2 -msgid "Selected properties will be applied recursively." -msgstr "" - -#: ui/glade/properties.glade.h:3 lib/contextmenuitems.py:384 -msgid "Delete" -msgstr "" - -#: ui/glade/properties.glade.h:4 -msgid "Delete properties recursively" -msgstr "" - -#: ui/glade/properties.glade.h:5 -msgid "Edit..." -msgstr "" - -#: ui/glade/properties.glade.h:6 -msgid "New..." -msgstr "" - -#: ui/glade/properties.glade.h:7 lib/contextmenuitems.py:489 -msgid "Properties" -msgstr "" - -#: ui/glade/properties.glade.h:8 -msgid "URL/Path:" -msgstr "" - -#: ui/glade/property_editor.glade.h:1 -msgid "Remote URI:" -msgstr "" - -#: ui/glade/property_editor.glade.h:2 -msgid "Working Copy:" -msgstr "" - -#: ui/glade/property_editor.glade.h:3 -msgid "Add a new property." -msgstr "" - -#: ui/glade/property_editor.glade.h:4 -msgid "Close this dialog." -msgstr "" - -#: ui/glade/property_editor.glade.h:5 -msgid "Property Editor" -msgstr "" - -#: ui/glade/property_editor.glade.h:6 -msgid "Refresh the list of properties." -msgstr "" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "" - -#: ui/glade/settings.glade.h:4 -msgid "Program used to browse repositories" -msgstr "" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to compare files" -msgstr "" - -#: ui/glade/settings.glade.h:6 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "" - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "" - -#: ui/glade/settings.glade.h:21 lib/contextmenuitems.py:501 -msgid "Settings" -msgstr "" - -#: ui/glade/settings.glade.h:22 -msgid "Show RabbitVCS debugging tools" -msgstr "" - -#: ui/glade/settings.glade.h:23 -msgid "Show new version on the right side" -msgstr "" - -#: ui/glade/settings.glade.h:24 -msgid "The debug menu is used to diagnose problems with RabbitVCS itself" -msgstr "" - -#: ui/glade/settings.glade.h:25 -msgid "Type:" -msgstr "" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "" - -#: ../clients/nautilus/RabbitVCS.py:213 -msgid "Age" -msgstr "" - -#: lib/vcs/svn/__init__.py:250 lib/vcs/svn/__init__.py:259 -#: lib/vcs/svn/__init__.py:266 -msgid "Added" -msgstr "" - -#: lib/vcs/svn/__init__.py:251 lib/vcs/svn/__init__.py:267 -msgid "Copied" -msgstr "" - -#: lib/vcs/svn/__init__.py:252 lib/vcs/svn/__init__.py:258 -msgid "Deleted" -msgstr "" - -#: lib/vcs/svn/__init__.py:253 -msgid "Restored" -msgstr "" - -#: lib/vcs/svn/__init__.py:254 -msgid "Reverted" -msgstr "" - -#: lib/vcs/svn/__init__.py:255 -msgid "Failed Revert" -msgstr "" - -#: lib/vcs/svn/__init__.py:256 -msgid "Resolved" -msgstr "" - -#: lib/vcs/svn/__init__.py:257 -msgid "Skipped" -msgstr "" - -#: lib/vcs/svn/__init__.py:260 -msgid "Updated" -msgstr "" - -#: lib/vcs/svn/__init__.py:261 lib/vcs/svn/__init__.py:263 -msgid "Completed" -msgstr "" - -#: lib/vcs/svn/__init__.py:262 lib/vcs/svn/__init__.py:264 -msgid "External" -msgstr "" - -#: lib/vcs/svn/__init__.py:265 -msgid "Modified" -msgstr "" - -#: lib/vcs/svn/__init__.py:268 -msgid "Replaced" -msgstr "" - -#: lib/vcs/svn/__init__.py:269 lib/vcs/svn/__init__.py:288 -msgid "Changed" -msgstr "" - -#: lib/vcs/svn/__init__.py:270 -msgid "Annotated" -msgstr "" - -#: lib/vcs/svn/__init__.py:272 -msgid "Unlocked" -msgstr "" - -#: lib/vcs/svn/__init__.py:273 -msgid "Failed Lock" -msgstr "" - -#: lib/vcs/svn/__init__.py:274 -msgid "Failed Unlock" -msgstr "" - -#: lib/vcs/svn/__init__.py:283 -msgid "Inapplicable" -msgstr "" - -#: lib/vcs/svn/__init__.py:284 -msgid "Unknown" -msgstr "" - -#: lib/vcs/svn/__init__.py:285 -msgid "Unchanged" -msgstr "" - -#: lib/vcs/svn/__init__.py:286 -msgid "Missing" -msgstr "" - -#: lib/vcs/svn/__init__.py:287 -msgid "Obstructed" -msgstr "" - -#: lib/vcs/svn/__init__.py:289 -msgid "Merged" -msgstr "" - -#: lib/vcs/svn/__init__.py:290 -msgid "Conflicted" -msgstr "" - -#: lib/vcs/svn/__init__.py:1656 -msgid "Patched" -msgstr "" - -#: lib/vcs/svn/__init__.py:1660 -msgid "Patch Failed" -msgstr "" - -#: lib/vcs/svn/__init__.py:1668 -msgid "Rejected Patch" -msgstr "" - -#: lib/helper.py:558 -#, python-format -msgid "%i second" -msgid_plural "%i seconds" -msgstr[0] "" -msgstr[1] "" - -#: lib/helper.py:561 -#, python-format -msgid "%i minute" -msgid_plural "%i minutes" -msgstr[0] "" -msgstr[1] "" - -#: lib/helper.py:564 -#, python-format -msgid "%i hour" -msgid_plural "%i hours" -msgstr[0] "" -msgstr[1] "" - -#: lib/helper.py:567 -#, python-format -msgid "%i day" -msgid_plural "%i days" -msgstr[0] "" -msgstr[1] "" - -#: lib/helper.py:570 -#, python-format -msgid "%i week" -msgid_plural "%i weeks" -msgstr[0] "" -msgstr[1] "" - -#: lib/helper.py:573 -#, python-format -msgid "%i month" -msgid_plural "%i months" -msgstr[0] "" -msgstr[1] "" - -#: lib/helper.py:576 -#, python-format -msgid "%i year" -msgid_plural "%i years" -msgstr[0] "" -msgstr[1] "" - -#: lib/contextmenuitems.py:231 -msgid "Debug" -msgstr "" - -#: lib/contextmenuitems.py:236 -msgid "Bugs" -msgstr "" - -#: lib/contextmenuitems.py:241 -msgid "Open Shell" -msgstr "" - -#: lib/contextmenuitems.py:247 -msgid "Refresh Status" -msgstr "" - -#: lib/contextmenuitems.py:252 -msgid "Debug Revert" -msgstr "" - -#: lib/contextmenuitems.py:253 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/contextmenuitems.py:259 -msgid "Invalidate" -msgstr "" - -#: lib/contextmenuitems.py:260 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/contextmenuitems.py:266 -msgid "Add Emblem" -msgstr "" - -#: lib/contextmenuitems.py:267 -msgid "Add an emblem" -msgstr "" - -#: lib/contextmenuitems.py:273 -msgid "Checkout..." -msgstr "" - -#: lib/contextmenuitems.py:274 -msgid "Check out a working copy" -msgstr "" - -#: lib/contextmenuitems.py:279 -msgid "Update a working copy" -msgstr "" - -#: lib/contextmenuitems.py:285 -msgid "Commit modifications to the repository" -msgstr "" - -#: lib/contextmenuitems.py:290 -msgid "RabbitVCS" -msgstr "" - -#: lib/contextmenuitems.py:296 -msgid "Browse a repository tree" -msgstr "" - -#: lib/contextmenuitems.py:301 -msgid "Check for Modifications..." -msgstr "" - -#: lib/contextmenuitems.py:302 -msgid "Check for modifications made to the repository" -msgstr "" - -#: lib/contextmenuitems.py:307 -msgid "Diff Menu..." -msgstr "" - -#: lib/contextmenuitems.py:308 -msgid "List of comparison options" -msgstr "" - -#: lib/contextmenuitems.py:313 -msgid "View diff against base" -msgstr "" - -#: lib/contextmenuitems.py:314 -msgid "View the modifications made to a file" -msgstr "" - -#: lib/contextmenuitems.py:319 -msgid "View diff between files/folders" -msgstr "" - -#: lib/contextmenuitems.py:320 -msgid "View the differences between two files" -msgstr "" - -#: lib/contextmenuitems.py:326 -msgid "View the modifications made to a file since its last change" -msgstr "" - -#: lib/contextmenuitems.py:331 -msgid "Compare with base" -msgstr "" - -#: lib/contextmenuitems.py:332 -msgid "Compare with base using side-by-side comparison tool" -msgstr "" - -#: lib/contextmenuitems.py:337 -msgid "Compare files/folders" -msgstr "" - -#: lib/contextmenuitems.py:338 -msgid "Compare the differences between two items" -msgstr "" - -#: lib/contextmenuitems.py:344 -msgid "Compare with previous revision using side-by-side comparison tool" -msgstr "" - -#: lib/contextmenuitems.py:349 -msgid "Show Changes..." -msgstr "" - -#: lib/contextmenuitems.py:350 -msgid "Show changes between paths and revisions" -msgstr "" - -#: lib/contextmenuitems.py:355 -msgid "Show Log" -msgstr "" - -#: lib/contextmenuitems.py:356 -msgid "Show a file's log information" -msgstr "" - -#: lib/contextmenuitems.py:362 -msgid "Schedule items to be added to the repository" -msgstr "" - -#: lib/contextmenuitems.py:367 -msgid "Add to ignore list" -msgstr "" - -#: lib/contextmenuitems.py:372 -msgid "Update to revision..." -msgstr "" - -#: lib/contextmenuitems.py:373 -msgid "Update a file to a specific revision" -msgstr "" - -#: lib/contextmenuitems.py:378 -msgid "Rename..." -msgstr "" - -#: lib/contextmenuitems.py:379 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/contextmenuitems.py:385 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/contextmenuitems.py:391 -msgid "Revert an item to its unmodified state" -msgstr "" - -#: lib/contextmenuitems.py:397 -msgid "Mark a conflicted item as resolved" -msgstr "" - -#: lib/contextmenuitems.py:402 -msgid "Restore" -msgstr "" - -#: lib/contextmenuitems.py:403 -msgid "Restore a missing item" -msgstr "" - -#: lib/contextmenuitems.py:407 -msgid "Relocate..." -msgstr "" - -#: lib/contextmenuitems.py:408 -msgid "Relocate your working copy" -msgstr "" - -#: lib/contextmenuitems.py:413 -msgid "Get Lock..." -msgstr "" - -#: lib/contextmenuitems.py:414 -msgid "Locally lock items" -msgstr "" - -#: lib/contextmenuitems.py:419 -msgid "Release Lock..." -msgstr "" - -#: lib/contextmenuitems.py:420 -msgid "Release lock on an item" -msgstr "" - -#: lib/contextmenuitems.py:426 -msgid "Clean up working copy" -msgstr "" - -#: lib/contextmenuitems.py:431 -msgid "Export..." -msgstr "" - -#: lib/contextmenuitems.py:432 -msgid "Export a working copy or repository with no versioning information" -msgstr "" - -#: lib/contextmenuitems.py:437 -msgid "Create Repository here" -msgstr "" - -#: lib/contextmenuitems.py:438 -msgid "Create a repository in a folder" -msgstr "" - -#: lib/contextmenuitems.py:444 -msgid "Import an item into a repository" -msgstr "" - -#: lib/contextmenuitems.py:453 -msgid "Branch/tag..." -msgstr "" - -#: lib/contextmenuitems.py:454 -msgid "Copy an item to another location in the repository" -msgstr "" - -#: lib/contextmenuitems.py:459 -msgid "Switch..." -msgstr "" - -#: lib/contextmenuitems.py:460 -msgid "Change the repository location of a working copy" -msgstr "" - -#: lib/contextmenuitems.py:465 -msgid "Merge..." -msgstr "" - -#: lib/contextmenuitems.py:466 -msgid "A wizard with steps for merging" -msgstr "" - -#: lib/contextmenuitems.py:471 -msgid "Annotate..." -msgstr "" - -#: lib/contextmenuitems.py:472 -msgid "Annotate a file" -msgstr "" - -#: lib/contextmenuitems.py:477 -msgid "Create Patch..." -msgstr "" - -#: lib/contextmenuitems.py:478 -msgid "Creates a unified diff file with all changes you made" -msgstr "" - -#: lib/contextmenuitems.py:483 -msgid "Apply Patch..." -msgstr "" - -#: lib/contextmenuitems.py:484 -msgid "Applies a unified diff file to the working copy" -msgstr "" - -#: lib/contextmenuitems.py:490 -msgid "View the properties of an item" -msgstr "" - -#: lib/contextmenuitems.py:495 -msgid "Help" -msgstr "" - -#: lib/contextmenuitems.py:496 -msgid "View help" -msgstr "" - -#: lib/contextmenuitems.py:502 -msgid "View or change RabbitVCS settings" -msgstr "" - -#: lib/contextmenuitems.py:508 -msgid "About RabbitVCS" -msgstr "" - -#: lib/contextmenuitems.py:513 -msgid "Open" -msgstr "" - -#: lib/contextmenuitems.py:514 -msgid "Open a file" -msgstr "" - -#: lib/contextmenuitems.py:522 -msgid "Browse to" -msgstr "" - -#: lib/contextmenuitems.py:523 -msgid "Browse to a file or folder" -msgstr "" - -#: lib/contextmenuitems.py:546 -msgid "Revert property" -msgstr "" - -#: lib/contextmenuitems.py:548 -msgid "Revert this property to its original state" -msgstr "" - -#: lib/contextmenuitems.py:552 -msgid "Revert property (recursive)" -msgstr "" - -#: lib/contextmenuitems.py:554 -msgid "Revert this property to its original state (recursive)" -msgstr "" - -#: lib/contextmenuitems.py:560 lib/contextmenuitems.py:566 -msgid "Delete property" -msgstr "" - -#: lib/contextmenuitems.py:562 -msgid "Delete this property" -msgstr "" - -#: lib/contextmenuitems.py:568 -msgid "Delete this property (recursive)" -msgstr "" - -#: lib/contextmenuitems.py:595 -msgid "Ignore item by filename" -msgstr "" - -#: lib/contextmenuitems.py:614 -msgid "Ignore item by file extension" -msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/README rabbitvcs-0.15.0.5/rabbitvcs/po/README --- rabbitvcs-0.13.1/rabbitvcs/po/README 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -How to create a translation --------------------------- - -Here is a brief set of commands to generate a new translation. Replace -en_CA with your language and locale of choice. - -$ msginit --input=po/RabbitVCS.pot --locale=en_CA -$ mv en_CA.po po/en_CA.po - -Update po/en_CA.po with your translations. When you are done, type: - -$ mkdir -p locale/en_CA/LC_MESSAGES -$ msgfmt --output-file=locale/en_CA/LC_MESSAGES/RabbitVCS.mo po/en_CA.po diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/ro.po rabbitvcs-0.15.0.5/rabbitvcs/po/ro.po --- rabbitvcs-0.13.1/rabbitvcs/po/ro.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/ro.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1338 +0,0 @@ -# Romanian translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-04-14 09:08+0000\n" -"Last-Translator: Mircea Deaconu \n" -"Language-Team: Romanian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Copia de lucru a fost modificată. Dacă veţi copia din revizia HEAD veţi " -"pierde modificările efectuate local." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Trebuie să furnizaţi o cale pentru destinaţie." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "" - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Informaţii despre revizie invalide" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "" - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Actualizaţi la revizia" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "În curs de actualizare..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Actualizare completă" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Este necesar câmpul pentru noul nume" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Redenumire" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "" - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Redenumire efectuată" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Linia" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revizia" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Data" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "" - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "" - -#: ui/settings.py:50 -msgid "English" -msgstr "" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "" - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "" - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "" - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "" - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "" - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "" - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "" - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "" - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "" - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "" - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "" - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "" - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "" - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "" - -#: ui/properties.py:61 -msgid "Name" -msgstr "" - -#: ui/properties.py:61 -msgid "Value" -msgstr "" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "" - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "" - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "" - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "" - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/ru.po rabbitvcs-0.15.0.5/rabbitvcs/po/ru.po --- rabbitvcs-0.13.1/rabbitvcs/po/ru.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/ru.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1355 +0,0 @@ -# Russian translations for rabbitvcs package -# Русские переводы для пакета rabbitvcs. -# Copyright (C) 2009 THE rabbitvcs'S COPYRIGHT HOLDER -# This file is distributed under the same license as the rabbitvcs package. -# , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs 0.12\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-06-20 07:39+0000\n" -"Last-Translator: Rion \n" -"Language-Team: Russian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" -"X-Language: ru_RU\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"В рабочей копии имеются изменения. Если вы скопируете из HEAD ревизии, то " -"потеряете свои изменения." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Вы должны задать путь назначения." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "Начальная ревизия обязательна." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Неверная информация о ревизии" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Ветка/тэг" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "" - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Ветка/тэг создана" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Обновить до ревизии" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Обновление..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Обновление завершено" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Новое имя обазятельно!" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Переименовать" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Переименовывание..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Переименовано" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Нельзя комментировать каталоги" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Комментировать - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Строка" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Ревизия" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Автор" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Дата" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Текст" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "Начальная ревизия должно быть целое число" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Генерирование комментария..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Завершено" - -#: ui/settings.py:50 -msgid "English" -msgstr "Английский" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Выбор программы" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Вы действительно хотите удалить адреса репозиториев?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Адреса репозиториев удалены" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "Вы точно хотите удалить ваши предыдущие сообщения?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Предыдущие сообщения удалены" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "Вы точно хотите удалить информацию об аутентификации?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Информация о аутентификации удалена" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Зачистить" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Зачистка..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Зачистка завершена" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Поля URL и От - обязательны" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Переселить" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Переселение" - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Переселение завершено" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Путь" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Расширение" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Загрузка..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Найдено %d элементов" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Добавить" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Добавление..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Добавлено" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Открыть" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Удалить" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Добавить в игнор" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Импорт - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "Поле URL - обязательно" - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Импорт" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Импортирование..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Импорт завершен" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Блокирован" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Да" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Заблокировать" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Блокировка..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Заблокировано" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Удалить блокировку" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Показать отличия" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Показать лог" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Экспорт - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "Поля URL репозитория и путь назначения - обязательны." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Экспорт" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Экспортирование..." - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Экспорт завершен" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Разрешить конфликт" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Разрешение конфликта..." - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Конфликт решен" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Действие" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Тип mime" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Пустое сообщение" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Завершено" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Завершено" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "Заданный путь не является рабочей копией" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Зафиксировать" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Фиксация..." - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Фиксация завершена" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Откатить изменения" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Восстановить" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Сообщение" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Выбор каталога" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "до" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Выбрать файл" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Вы действительно хотите продолжить?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "выбранные элементы" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "Укажите адрес репозитория" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Переключить" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Переключение" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Переключение завершено" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Разблокировать" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Снатие блокировки..." - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Блокировка снята" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Слияние завершено" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Слить" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "Извлечь - %s" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "Извлечь" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Извлечение исходников..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Извлечение завершено" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Лог - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Копия из пути" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Копия из ревизии" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Отменено" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "Н/Д" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(без автора)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "" - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Свойства - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Имя" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Значение" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Восстановление исходного состояния..." - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Исходное состояние восстановлено" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Обновить" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Репозиторий успешно создан" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "Ошибка при создании репозитория. Убедитесь что папка пуста." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Ревизия" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Из:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "Ведущая" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "В:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Сообщения оповещений" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Добавить сообщение" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "Измененные файлы (двойной щелчек для просмотра изменений)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Зафиксировать в:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Предыдущие сообщения" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Выбрать / Снять выбор для всего" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Показать файлы без версии" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Файлы на блокировки" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "Пожалуйста опишите причину блокировки этих файлов" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Блокировать файлы" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Скрыть блокировки" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Свойства для:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Редактирование..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Новый..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Свойства" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Путь:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Из ревизии" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Комментировать" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Ссылки" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Информация о версии" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "О программе" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Авторы:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Спасибо:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Новое имя:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "Создать копию из" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Репозиторий" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Копировать Ведущую" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Копировать ревизию" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Копировать рабочую копию" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "Затронутые файлы" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Сообщение" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Таблица ревизий" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Огрничение" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Лог" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Обновить" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Отображенные ревизии:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Остановиться на копировании" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Из URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "Из: (URL и ревизия для слития)" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Настройки" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Диапозон ревизий" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "В: (URL и ревизия для слияния)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "URL для слияния из" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Рабочая копия" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" -"Выберите этот метод если вы вносили изменения в ветку и желаете слить свои " -"изменения с другой веткой." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" -"Выберите этот метод если вы хотите слить две разных ветки в свою рабочую " -"копию." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Игнорировать предков" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Помощник Слияния" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Слить диапозон ревизий" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Слить два различных дерева" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Только зарегистрировать слияние" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Рекурсивно" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Пробное слияние" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" -"Используйте диалог лога для выбора ревизий для слияния. Или впишите ревизии " -"вручную через запятую. Вы можете указать диапазон через тире \n" -"\n" -"Пример: 4-7,9,11,15-HEAD\n" -"\n" -"Оставьте пустым для слияния всех ревизий." - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Аутентификация" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Сообщения лога" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Настройки журнала" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Программа для просмотра репозиториев" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Программа используемая для сравнения файлов" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "История URL" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Обзор..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Удалить информацию об аутентификации" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Разрешить иконки" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Разрешить атрибуты файлов" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "Разрешить рекурсивную проверку статуса" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Внешние Программы" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "Общие" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Язык:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Журнал" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "Максимальный уровень журнала" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Сколько URL'ов запоминать" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Сколько сообщений запоминать" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Сохраненные даныне" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Настройки" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Показывать новую версию справа" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Тип:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Вызвана зачистка...\n" -"\n" -"Начать зачистку рабочей копии?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Свойства сертификата" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Редактирование свойства" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Пожалуйста добавьте информацию об аутентификации" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Предыдущие сообщения" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" -"Вы действительно хотите удалить %item%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Принять навсегда" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Принять единожды" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Аутентификация" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Проверить сертификат" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Подтверждение" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Удалить подтверждение" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Fingerprint:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Хост:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Имя пользоввателя:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Пароль:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Свойство" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Свойство:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "Элементы будут отправлены в корзину" - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Значение:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Назначение:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "Без внешних включений" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Сообщение Импортирования" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Включить игнорируемые файлы" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "Глубина обновления" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Изменить репозиторий вашей рабочей копии" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Отладка" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Запустить/перезапустить сервис" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Баги" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Открыть терминал" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Обновить статус" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Отладка отмены изменений" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "Отменяет изменения во всем что видит" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Добавить Иконку" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Добавить иконку" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Обновить рабочую копию" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Зафиксировать изменения в репозитории" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Показать лог" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "Показать лог файла" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Игнорировать все файлы с таким расширением" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Обновить до ревизии..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Обновить файл до определенной ревизии" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Переименовать..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Вернуть к исходному состоянию" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Пометить конфликт как улаженный" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Переселить..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "Перебазировать рабочую копию" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "Блокировка..." - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Разблокировка..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Разблокировать элемент" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Зачистить рабочую копию" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "" -"Экспортировать рабочую копию или репозиторий без информации о версионности" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Создать репозиторий здесь" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Создать репозиторий в папке" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Импортировать элемент в репозиторий" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Ветка/тэг..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Копировать элемент в другое место в репозитории" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Переключить..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Сменить адрес репозитория рабочей копии" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Слияние..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "Пошаговый мастер слияния" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Комментировать..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Комментировать файл" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Помощь" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Посмотреть помощь" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Просмотреть или изменить настройки RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "О RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Добавлено" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Удален" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Восстановлен" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Улажен" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Пропущен" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Обновлен" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Внешний" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Заменен" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Прокомментировано" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Разблокирован" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Не изменен" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Пропущен" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Слито" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/sk.po rabbitvcs-0.15.0.5/rabbitvcs/po/sk.po --- rabbitvcs-0.13.1/rabbitvcs/po/sk.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/sk.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1347 +0,0 @@ -# Slovak translation for rabbitvcs -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the rabbitvcs package. -# FIRST AUTHOR , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-06-09 15:34+0000\n" -"Last-Translator: milboy \n" -"Language-Team: Slovak \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Boli upravené vaše pracovné kópie. Ak budete kopírovať revíziu z HEAD,vaše " -"zmeny budú stratené.v" - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Musíte zadať cieľ umiestnenia." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "V revíznom poli je potrebné." - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Chybná revízna informácia" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "" - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "" - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Aktualizovať revíziu" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Aktualizácia..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Aktualizácia dokončená" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Vyžadovaný je nový názov poľa" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Premenovať" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Spúšťam príkaz na premenovanie..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Premenovanie dokončené" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Nemožno komentovať adresár" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Komentovať -%s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Riadok" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revízia" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Autor" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Dátum" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Text" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "generovať komentár..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Ukončené" - -#: ui/settings.py:50 -msgid "English" -msgstr "Anglicky" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Vyberte program" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Ste si istí, že chcete vymazať vašu cestu k repozitárom?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Cesta k repozitárom vymazaná" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "Ste si istý, že chcete vymazať vaše predchádzajúce správy?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Predchádzajúce správy vymazané" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "Ste si istí, že chcete vymazať vaše autentizačný údaje?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Autentizačný údaje vymazané" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Čistenie" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Vyčistené..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Čistenie ukončené" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "" - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Premiestniť" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Spúšťam príkaz na premiestnenie..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Premiestnenie ukončené" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Cesta" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Rozšírenie" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Načítavam..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Nájdená %d položka(y)" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Pridať" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Spúšťam príkaz na pridanie" - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Pridanie ukončené" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Otvoriť" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Prehľadávať" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Odstrániť" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Pridať do zoznamu ignorovaných" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Import - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "" - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Import" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Spúšťam príkaz na importovanie" - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Import ukončený" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Zamknutý" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Ano" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Zamknite" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Spúšťam príkaz na zamknutie" - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Zamknutie ukončené" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Odstrániť zámok" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Zobraziť záznam" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Ukázať záznam" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Export - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "" - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Export" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Spúšťam príkaz na export" - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Export ukončený" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Riešenie" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Spúšťam príkaz na riešenie" - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Riešenie ukončené" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Akcia" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Prázdna správa" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Dokončené" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Dokončené" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Stav textu" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "Stav objektu" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Odovzdať" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Spúšťam príkaz na odovzdanie" - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Odovzdanie ukončené" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Späť" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Obnoviť" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Spráava" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Vyber priečinok" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "do" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Vyber súbor" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Ste si istý že chcete pokračovať?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "vybraná položka(y)" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "" - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Prepnúť" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Spúšťam príkaz na prepnutie" - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Prepnutie dokončené" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Odomknúť" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Spúšťam príkaz na odomknutie" - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Odomknutie dokončené" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "Spúšťam test zlúčenia" - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "Test zlúčenia ukončený" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "Spúšťam príkaz na zlúčenie" - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Zlúčenie ukončené" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Zlúčenie" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "Vyskúšanie - %s" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "Vyskúšanie" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Spúšťam test na vyskúšanie" - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Vyskúšanie ukončené" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Záznam - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Kopírovať zo záznamu" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Kopírovať z revízie" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Zrušené" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "N/A" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(bez autora)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "Načítánie informácie o prihlásení ..." - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Vlastnosti - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Názov" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Hodnota" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Spúšťam spätný príkaz" - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Návrat ukončený" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Aktualizácia" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Repozitár úspešne vytvorený" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" -"Došlo ku chybe pri vytváraní repozitára. Uistite sa, či je príslušná zložka " -"prázdna." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Revízia" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "Prepnúť detaily" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Z..." - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "HEAD" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Do:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Oznamovacie Správy" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Pridať správu" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "Zmenené súbory (dvakrát-kliknite na pozri diff)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Odovzdať do:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Predchádzajúca správa" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Vybrať / Zrušiť všetko" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Zobraziť neverziované súbory" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Súbory na zamknutie" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "Opíšte prosím, prečo tieto súbory zamykáte" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Zamknúť súbory" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Prevziať zámky" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Vlastnosti pre:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Editovať..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Nový..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Vlastnosti" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Cesta:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Z Revízie" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "Do Revízie" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Komentovať" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Linky" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Informácie o verzii" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "O" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Autori:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Poďakovanie" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Nový názov" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "Vytvoriť kópiu z" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Repozitáre" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Kopírovať z titulku" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Kopírovať z revízie" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Kopírovanie z pracovnej kópie" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "Afektovaný súbor(y)" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Správa" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Revízna tabuľka" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Limit:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Záznam" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Obnoviť" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Zobraziť revízie:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Stop na kópiu" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "z URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Voľby" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Rozsah revízie" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Pracovná kopia" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" -"Vyberte túto možnosť, ak ste urobili nejaké zmeny vo vetvách a chcete zlúčiť " -"vaše zmeny s inou vetvou." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" -"Vyberte túto možnosť, ak chcete zlúčiť dve rôzne vetvy do vašej pracovnej " -"kópie." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Ignorovať rod" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Zlúčiť pomocníka" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Zlúčiť niekoľko revízií" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Zlúčenie dvoch rôznych stromov" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Iba záznam zlúčenia" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Rekurzívny" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Test zlúčenia" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Autentizácia" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Záznam správ" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Možnosti zaznamenávania" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Program používaný na prezeranie repozitára" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Program používaný na porovnávanie súborov" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "URL História" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Prehľadávať..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Vymazať vaše overovacie informácie" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Povoliť emblémy" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Povoliť atribúty súborov" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Externé programy" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "Všeobecné" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Jazyk:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Prihlásenie" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Počet adries URL k zapamätaniu" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Počet správ k zapamätaniu" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Uložené údaje" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Nastavenia" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Zobraziť novú verziu na pravej strane" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Typ" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Požadované čistenie....\n" -"\n" -"Otvorenie pracovnej kópie čistenia?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Podrobnosti certifikátu" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Upraviť vlastnosť podrobností" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Prosím pridajte vaše podrobnosti o overení" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Predchádzajúce správy" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "Naozaj chcete zmazať %položku%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Prijať navždy" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Prijať iba teraz" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Autentizácia" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Skontrolujte Certifikát" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Potvrdenie" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Odstráň potvrdenie" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Odmietnuť" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Odtlačok prsta:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Hostiteľ:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Emitent:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Prihlasovacie meno:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Heslo:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Vlastnosť" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Vlastnosť:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "Oblasť:" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Uložiť overenie" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "Položka(y) bude zaslaná do koša." - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "Platné:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Hodnota:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Destinácia:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Import správy" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Zahrnúť ignorované súbory" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Zmeniť repozitár vašej pracovnej kópie" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Správa o ladení" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Spustiť/Reštartovať službu" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Ukončiť službu" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Chyby" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Otvoriť shell" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Obnoviť stav" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "Vráti všetko viditeľné" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Zruší" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Pridať znak" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Pridať nejaký znak" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "Pozrite sa na pracovnú kópiu" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Aktualizovať pracovnú kópiu" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Rešpektovať zmeny repozitára" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "Zobrazenie zmien do súboru" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Zobraziť záznam" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "Rozvrh položiek, ktoré majú byť pridané do repozitára" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "Ignorovať položku" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Ignorovať všetky súbory s rozšírením" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Aktualizácia revízie" - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Aktualizácia súboru do určenej revízie" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Premenovať" - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Vrátiť položku do jej nezmeneného stavu" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Označiť položku v rozpore ako vyriešenú" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Premiestniť..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "Premiestniť vašu pracovnú kópiu" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "" - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "Lokálny zámok položky" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Vydanie zámku ..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Vydanie zámku na položku" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Vyčistiť pracovnú kópiu" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "Exportovať pracovnú kópiu alebo repozitáre bez informácie o verzii" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Vytvoriť repozitáre tu" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Vytvoriť repozitáre v priečinku" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Importovať položky do repozitára" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Branch/tag..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Kopírovať položku na iné miesto v repozitári" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Prepni..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Zmeniť umiestnenie repozitára pracovnej kópie" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Zlúčiť..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "A sprievodca s krokmi pre zlúčenie" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Komentovať..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Komentovať súbor" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "Pozrieť vlastnosti položky" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Pomocník" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Pozrieť pomocníka" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Pozrieť alebo zmeniť nastavenia RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "O RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Pridané" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Skopírované" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Odstránené" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Obnovené" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "Vrátenie" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "Chybné vrátennie" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Vyriešené" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Preskočené" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Aktualizované" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Vonkajšie" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Modifikované" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Nahradené" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Zmenené" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Poznamenané" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Odomknuté" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Zlyhalo zamknutie" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Zlyhalo odomknutie" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "Nepoužitelné" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Neznáme" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Nezmenené" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Stratené" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "Upchané" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Zlúčené" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "V rozpore" diff -Nru rabbitvcs-0.13.1/rabbitvcs/po/sv.po rabbitvcs-0.15.0.5/rabbitvcs/po/sv.po --- rabbitvcs-0.13.1/rabbitvcs/po/sv.po 2009-09-28 11:22:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/po/sv.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,1356 +0,0 @@ -# Swedish translations for rabbitvcs package -# Svenska översättningar för paket rabbitvcs. -# Copyright (C) 2009 THE rabbitvcs'S COPYRIGHT HOLDER -# This file is distributed under the same license as the rabbitvcs package. -# , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: rabbitvcs 0.12\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-03-04 14:35-0500\n" -"PO-Revision-Date: 2009-08-22 14:54+0000\n" -"Last-Translator: Martin Lindhe \n" -"Language-Team: Swedish\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-09-24 13:44+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ui/branch.py:71 -msgid "" -"There have been modifications to your working copy. If you copy from the " -"HEAD revision you will lose your changes." -msgstr "" -"Det har skett ändringar i din arbetskopia. Om du kopierar från HEAD-" -"versionen kommer du att förlora dina ändringar." - -#: ui/branch.py:89 -msgid "You must supply a destination path." -msgstr "Du måste ange en destinationssökväg." - -#: ui/branch.py:99 -msgid "The from revision field is required." -msgstr "Från versions fältet krävs," - -#: ui/branch.py:108 -msgid "Invalid revision information" -msgstr "Ogiltig versionsinformation" - -#: ui/branch.py:123 ui/glade/branch.glade.h:4 -msgid "Branch/tag" -msgstr "Gren/tagg" - -#: ui/branch.py:124 -msgid "Running Branch/tag Command..." -msgstr "Kör Gren/tagg kommando..." - -#: ui/branch.py:126 -msgid "Completed Branch/tag" -msgstr "Färdig Gren/tagg..." - -#: ui/updateto.py:70 -msgid "Update To Revision" -msgstr "Uppdatera till revision" - -#: ui/updateto.py:71 ui/update.py:54 -msgid "Updating..." -msgstr "Uppdaterar..." - -#: ui/updateto.py:79 ui/update.py:57 -msgid "Completed Update" -msgstr "Uppdatering färdig" - -#: ui/rename.py:59 -msgid "The new name field is required" -msgstr "Det nya namnet är ett obligatoriskt fält" - -#: ui/rename.py:70 ui/glade/rename.glade.h:2 -msgid "Rename" -msgstr "Byt namn" - -#: ui/rename.py:71 -msgid "Running Rename Command..." -msgstr "Kör Byt namn..." - -#: ui/rename.py:78 -msgid "Completed Rename" -msgstr "Namnbyte genomfört" - -#: ui/annotate.py:51 -msgid "Cannot annotate a directory" -msgstr "Det går inte att kommentera en katalog" - -#: ui/annotate.py:58 -#, python-format -msgid "Annotate - %s" -msgstr "Kommentar - %s" - -#: ui/annotate.py:71 -msgid "Line" -msgstr "Rad" - -#: ui/annotate.py:71 ui/log.py:80 ui/glade/switch.glade.h:5 -#: ui/glade/merge.glade.h:17 ui/glade/checkout.glade.h:10 -#: ui/glade/update.glade.h:6 -msgid "Revision" -msgstr "Revision" - -#: ui/annotate.py:71 ui/log.py:80 -msgid "Author" -msgstr "Författare" - -#: ui/annotate.py:72 ui/dialog.py:47 ui/log.py:81 -msgid "Date" -msgstr "Datum" - -#: ui/annotate.py:72 -msgid "Text" -msgstr "Text" - -#: ui/annotate.py:112 -msgid "The from revision field must be an integer" -msgstr "Från version fältet måste vara ett heltal" - -#: ui/annotate.py:122 -msgid "Generating Annotation..." -msgstr "Genererar kommentar..." - -#: ui/annotate.py:138 lib/vcs/svn/__init__.py:122 lib/vcs/svn/__init__.py:124 -msgid "Completed" -msgstr "Färdig" - -#: ui/settings.py:50 -msgid "English" -msgstr "Engelska" - -#: ui/settings.py:156 ui/settings.py:165 -msgid "Select a program" -msgstr "Välj ett program" - -#: ui/settings.py:174 -msgid "Are you sure you want to clear your repository paths?" -msgstr "Är du säker på att du vill rensa dina arkivs sökvägar?" - -#: ui/settings.py:181 -msgid "Repository paths cleared" -msgstr "Arkivets sökvägar rensade" - -#: ui/settings.py:185 -msgid "Are you sure you want to clear your previous messages?" -msgstr "Är du säker på att du vill rensa dina tidigare meddelanden?" - -#: ui/settings.py:192 -msgid "Previous messages cleared" -msgstr "Tidigare meddelanden rensade" - -#: ui/settings.py:196 -msgid "Are you sure you want to clear your authentication information?" -msgstr "Är du säker på att du vill rensa din autentiseringsinformation?" - -#: ui/settings.py:213 -msgid "Authentication information cleared" -msgstr "Autentiseringsinformation rensad" - -#: ui/cleanup.py:54 lib/extensions/nautilus/RabbitVCS.py:831 -msgid "Cleanup" -msgstr "Rensa" - -#: ui/cleanup.py:55 ui/glade/cleanup.glade.h:1 -msgid "Cleaning Up..." -msgstr "Rensar upp..." - -#: ui/cleanup.py:57 -msgid "Completed Cleanup" -msgstr "Rensning färdig" - -#: ui/relocate.py:76 -msgid "The from and to url fields are both required." -msgstr "Både från och till url-fälten krävs." - -#: ui/relocate.py:86 ui/glade/relocate.glade.h:3 -msgid "Relocate" -msgstr "Omlokalisera" - -#: ui/relocate.py:87 -msgid "Running Relocate Command..." -msgstr "Kör omlokalisering..." - -#: ui/relocate.py:94 -msgid "Completed Relocate" -msgstr "Omlokalisering färdig" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/action.py:66 ui/commit.py:73 -#: ui/unlock.py:55 ui/log.py:89 ui/revert.py:55 -msgid "Path" -msgstr "Sökväg" - -#: ui/add.py:64 ui/lock.py:66 ui/resolve.py:55 ui/commit.py:73 ui/unlock.py:55 -#: ui/revert.py:55 -msgid "Extension" -msgstr "Tillägg" - -#: ui/add.py:78 ui/lock.py:96 ui/commit.py:97 ui/unlock.py:70 ui/log.py:253 -#: ui/glade/log.glade.h:6 -msgid "Loading..." -msgstr "Laddar..." - -#: ui/add.py:81 ui/lock.py:99 ui/commit.py:100 ui/unlock.py:91 -#, python-format -msgid "Found %d item(s)" -msgstr "Hittade %d objekt" - -#: ui/add.py:115 ui/commit.py:269 ui/glade/add.glade.h:1 -#: lib/extensions/nautilus/RabbitVCS.py:638 -msgid "Add" -msgstr "Lägg till" - -#: ui/add.py:116 -msgid "Running Add Command..." -msgstr "Kör Lägg till..." - -#: ui/add.py:118 -msgid "Completed Add" -msgstr "Färdig Lägga till" - -#: ui/add.py:141 ui/lock.py:206 ui/commit.py:239 -msgid "Open" -msgstr "Öppna" - -#: ui/add.py:150 ui/lock.py:216 ui/commit.py:249 -msgid "Browse to" -msgstr "Bläddra till" - -#: ui/add.py:159 ui/commit.py:259 ui/glade/properties.glade.h:2 -#: lib/extensions/nautilus/RabbitVCS.py:735 -msgid "Delete" -msgstr "Ta bort" - -#: ui/add.py:168 ui/commit.py:299 lib/extensions/nautilus/RabbitVCS.py:654 -msgid "Add to ignore list" -msgstr "Lägg till ignoreringslista" - -#: ui/import.py:41 -#, python-format -msgid "Import - %s" -msgstr "Importera - %s" - -#: ui/import.py:68 -msgid "The repository URL field is required." -msgstr "Arkivets URL fält krävs." - -#: ui/import.py:80 ui/glade/import.glade.h:3 -#: lib/extensions/nautilus/RabbitVCS.py:888 -msgid "Import" -msgstr "Importera" - -#: ui/import.py:81 -msgid "Running Import Command..." -msgstr "Kör Importera..." - -#: ui/import.py:89 -msgid "Completed Import" -msgstr "Färdig Importera" - -#: ui/lock.py:67 lib/vcs/svn/__init__.py:132 -msgid "Locked" -msgstr "Låst" - -#: ui/lock.py:90 ui/lock.py:107 -msgid "Yes" -msgstr "Ja" - -#: ui/lock.py:144 -msgid "Get Lock" -msgstr "Hämta lås" - -#: ui/lock.py:145 -msgid "Running Lock Command..." -msgstr "Kör Hämta lås..." - -#: ui/lock.py:154 -msgid "Completed Lock" -msgstr "Färdig Hämta lås" - -#: ui/lock.py:176 -msgid "Remove Lock" -msgstr "Ta bort lås" - -#: ui/lock.py:186 ui/commit.py:229 lib/extensions/nautilus/RabbitVCS.py:597 -msgid "View Diff" -msgstr "Visa Diff" - -#: ui/lock.py:196 ui/glade/switch.glade.h:6 ui/glade/branch.glade.h:10 -#: ui/glade/merge.glade.h:18 ui/glade/checkout.glade.h:11 -#: ui/glade/update.glade.h:7 -msgid "Show log" -msgstr "Visa logg" - -#: ui/export.py:40 -#, python-format -msgid "Export - %s" -msgstr "Exportera - %s" - -#: ui/export.py:58 ui/checkout.py:82 -msgid "The repository URL and destination path are both required fields." -msgstr "Arkivets URL och destination sökvägen är obligatoriska fält." - -#: ui/export.py:79 lib/extensions/nautilus/RabbitVCS.py:856 -msgid "Export" -msgstr "Exportera" - -#: ui/export.py:80 -msgid "Running Export Command..." -msgstr "Kör Exportera..." - -#: ui/export.py:91 -msgid "Completed Export" -msgstr "Färdig Exportera" - -#: ui/resolve.py:45 ui/resolve.py:76 -#: lib/extensions/nautilus/RabbitVCS.py:767 -msgid "Resolve" -msgstr "Lös" - -#: ui/resolve.py:77 -msgid "Running Resolve Command..." -msgstr "Kör Lös..." - -#: ui/resolve.py:80 -msgid "Completed Resolve" -msgstr "Färdig Lös" - -#: ui/action.py:66 ui/log.py:89 -msgid "Action" -msgstr "Åtgärd" - -#: ui/action.py:66 -msgid "Mime Type" -msgstr "Mime-typ" - -#: ui/action.py:135 -msgid "Empty Message" -msgstr "Tomt Meddelande" - -#: ui/action.py:249 ui/log.py:309 -msgid "Finished" -msgstr "Färdig" - -#: ui/action.py:253 -#, python-format -msgid "%s - Finished" -msgstr "%s - Färdigt" - -#: ui/commit.py:66 -msgid "The given path is not a working copy" -msgstr "Den angivna sökvägen är inte en arbetskopia" - -#: ui/commit.py:74 -msgid "Text Status" -msgstr "Textstatus" - -#: ui/commit.py:74 -msgid "Property Status" -msgstr "Egenskap status" - -#: ui/commit.py:188 ui/glade/commit.glade.h:4 -#: lib/extensions/nautilus/RabbitVCS.py:568 -msgid "Commit" -msgstr "Skicka" - -#: ui/commit.py:189 -msgid "Running Commit Command..." -msgstr "Kör Skicka..." - -#: ui/commit.py:195 -msgid "Completed Commit" -msgstr "Färdig Skicka" - -#: ui/commit.py:279 ui/revert.py:45 ui/revert.py:75 -#: lib/extensions/nautilus/RabbitVCS.py:751 -msgid "Revert" -msgstr "Återställ" - -#: ui/commit.py:289 -msgid "Restore" -msgstr "Återställ" - -#: ui/dialog.py:47 ui/log.py:81 ui/glade/dialogs.glade.h:20 -msgid "Message" -msgstr "Meddelande" - -#: ui/dialog.py:88 -msgid "Select a Folder" -msgstr "Välj en mapp" - -#: ui/dialog.py:117 ui/glade/log.glade.h:12 -msgid "to" -msgstr "till" - -#: ui/dialog.py:210 -msgid "Select a File" -msgstr "Välj en fil" - -#: ui/dialog.py:229 ui/glade/dialogs.glade.h:10 -msgid "Are you sure you want to continue?" -msgstr "Är du säker på att du vill fortsätta?" - -#: ui/dialog.py:257 -msgid "the selected item(s)" -msgstr "de markerade objekten" - -#: ui/switch.py:65 -msgid "The repository location is a required field." -msgstr "Arkivets plats är ett obligatoriskt fält." - -#: ui/switch.py:81 ui/glade/switch.glade.h:7 -msgid "Switch" -msgstr "Växla" - -#: ui/switch.py:82 -msgid "Running Switch Command..." -msgstr "Kör Växla..." - -#: ui/switch.py:90 -msgid "Completed Switch" -msgstr "Färdig Växla" - -#: ui/unlock.py:45 ui/unlock.py:109 -msgid "Unlock" -msgstr "Lås upp" - -#: ui/unlock.py:110 -msgid "Running Unlock Command..." -msgstr "Kör Lås upp..." - -#: ui/unlock.py:113 -msgid "Completed Unlock" -msgstr "Färdig Lås upp" - -#: ui/merge.py:81 -msgid "Running Merge Test" -msgstr "Kör Sammanfogningstest..." - -#: ui/merge.py:82 -msgid "Completed Merge Test" -msgstr "Färdig Sammanfogningstest" - -#: ui/merge.py:84 -msgid "Running Merge Command" -msgstr "Kör Sammanfoga..." - -#: ui/merge.py:85 -msgid "Completed Merge" -msgstr "Färdig Sammanfoga" - -#: ui/merge.py:93 -msgid "Merge" -msgstr "Sammanfoga" - -#: ui/checkout.py:52 -#, python-format -msgid "Checkout - %s" -msgstr "Hämta - %s" - -#: ui/checkout.py:100 ui/glade/checkout.glade.h:5 -#: lib/extensions/nautilus/RabbitVCS.py:536 -msgid "Checkout" -msgstr "Hämta" - -#: ui/checkout.py:101 -msgid "Running Checkout Command..." -msgstr "Kör Hämta..." - -#: ui/checkout.py:111 -msgid "Completed Checkout" -msgstr "Färdig Hämta" - -#: ui/log.py:63 -#, python-format -msgid "Log - %s" -msgstr "Logg - %s" - -#: ui/log.py:90 -msgid "Copy From Path" -msgstr "Kopiera från sökväg" - -#: ui/log.py:90 -msgid "Copy From Revision" -msgstr "Kopiera från version" - -#: ui/log.py:112 -msgid "Cancelled" -msgstr "Avbruten" - -#: ui/log.py:236 ui/log.py:237 ui/glade/log.glade.h:8 -msgid "N/A" -msgstr "Ej tillgänglig" - -#: ui/log.py:284 -msgid "(no author)" -msgstr "(ingen författare)" - -#: ui/log.py:313 -msgid "Retrieving Log Information..." -msgstr "Hämtar logginformation..." - -#: ui/properties.py:53 -#, python-format -msgid "Properties - %s" -msgstr "Egenskaper - %s" - -#: ui/properties.py:61 -msgid "Name" -msgstr "Namn" - -#: ui/properties.py:61 -msgid "Value" -msgstr "Värde" - -#: ui/revert.py:76 -msgid "Running Revert Command..." -msgstr "Kör Återställ..." - -#: ui/revert.py:78 -msgid "Completed Revert" -msgstr "Färdig Återställ" - -#: ui/update.py:53 ui/glade/update.glade.h:8 -#: lib/extensions/nautilus/RabbitVCS.py:552 -msgid "Update" -msgstr "Uppdatera" - -#: ui/create.py:49 -msgid "Repository successfully created" -msgstr "Arkivet skapades" - -#: ui/create.py:51 -msgid "" -"There was an error creating the repository. Make sure the given folder is " -"empty." -msgstr "" -"Det blev fel när arkivet skulle skapas. Kontrollera att den angivna mappen " -"är tom." - -#: ui/glade/switch.glade.h:1 ui/glade/checkout.glade.h:3 -#: ui/glade/update.glade.h:1 -msgid "Revision" -msgstr "Revision" - -#: ui/glade/switch.glade.h:2 -msgid "Switch Details" -msgstr "Växlings detaljer" - -#: ui/glade/switch.glade.h:3 ui/glade/branch.glade.h:8 -#: ui/glade/relocate.glade.h:2 -msgid "From:" -msgstr "Från:" - -#: ui/glade/switch.glade.h:4 ui/glade/merge.glade.h:10 -#: ui/glade/checkout.glade.h:7 ui/glade/update.glade.h:3 -msgid "HEAD" -msgstr "HEAD" - -#: ui/glade/switch.glade.h:8 ui/glade/branch.glade.h:11 -#: ui/glade/relocate.glade.h:4 -msgid "To:" -msgstr "Till:" - -#: ui/glade/notification.glade.h:1 -msgid "Notification Messages" -msgstr "Notifieringsmeddelanden" - -#: ui/glade/commit.glade.h:1 ui/glade/branch.glade.h:1 -msgid "Add Message" -msgstr "Lägg till Meddelande" - -#: ui/glade/commit.glade.h:2 -msgid "Changed Files (double-click to see diff)" -msgstr "Ändrade filer (dubbelklicka för att se diff)" - -#: ui/glade/commit.glade.h:3 -msgid "Commit to:" -msgstr "Skicka till:" - -#: ui/glade/commit.glade.h:5 ui/glade/lock.glade.h:4 ui/glade/branch.glade.h:9 -#: ui/glade/dialogs.glade.h:22 ui/glade/import.glade.h:5 -msgid "Previous Messages" -msgstr "Föregående meddelande" - -#: ui/glade/commit.glade.h:6 ui/glade/lock.glade.h:5 ui/glade/add.glade.h:2 -msgid "Select / Deselect all" -msgstr "Markera / Avmarkera alla" - -#: ui/glade/commit.glade.h:7 -msgid "Show unversioned files" -msgstr "Visa oversionerade filer" - -#: ui/glade/lock.glade.h:1 -msgid "Files to lock" -msgstr "Filer att låsa" - -#: ui/glade/lock.glade.h:2 -msgid "Please describe why you are locking these files" -msgstr "Beskriv varför du låser dessa filer" - -#: ui/glade/lock.glade.h:3 -msgid "Lock Files" -msgstr "Lås filer" - -#: ui/glade/lock.glade.h:6 -msgid "Steal the locks" -msgstr "Stjäl låsen" - -#: ui/glade/properties.glade.h:1 -msgid "Properties for:" -msgstr "Egenskaper för:" - -#: ui/glade/properties.glade.h:3 -msgid "Edit..." -msgstr "Redigera..." - -#: ui/glade/properties.glade.h:4 -msgid "New..." -msgstr "Ny..." - -#: ui/glade/properties.glade.h:5 lib/extensions/nautilus/RabbitVCS.py:995 -msgid "Properties" -msgstr "Egenskaper" - -#: ui/glade/properties.glade.h:6 -msgid "URL/Path:" -msgstr "URL/Sökväg:" - -#: ui/glade/annotate.glade.h:1 -msgid "From Revision" -msgstr "Från revision" - -#: ui/glade/annotate.glade.h:2 -msgid "To Revision" -msgstr "Till revision" - -#: ui/glade/annotate.glade.h:3 -msgid "Annotate" -msgstr "Kommentar" - -#: ui/glade/about.glade.h:1 -msgid "Links" -msgstr "Länkar" - -#: ui/glade/about.glade.h:2 -msgid "Version Information" -msgstr "Versionsinformation" - -#: ui/glade/about.glade.h:3 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/about.glade.h:4 lib/extensions/nautilus/RabbitVCS.py:1059 -msgid "About" -msgstr "Om" - -#: ui/glade/about.glade.h:5 -msgid "Authors:" -msgstr "Upphovsmän:" - -#: ui/glade/about.glade.h:6 -msgid "Thanks:" -msgstr "Tack:" - -#: ui/glade/rename.glade.h:1 -msgid "New Name:" -msgstr "Nytt namn:" - -#: ui/glade/branch.glade.h:2 -msgid "Create copy from" -msgstr "Skapa kopia från" - -#: ui/glade/branch.glade.h:3 ui/glade/checkout.glade.h:2 -#: ui/glade/import.glade.h:2 -msgid "Repository" -msgstr "Arkiv" - -#: ui/glade/branch.glade.h:5 -msgid "Copy from HEAD" -msgstr "Kopiera från HEAD" - -#: ui/glade/branch.glade.h:6 -msgid "Copy from revision" -msgstr "Kopiera från revision" - -#: ui/glade/branch.glade.h:7 -msgid "Copy from working copy" -msgstr "Kopiera från arbetskopia" - -#: ui/glade/log.glade.h:1 -msgid "100" -msgstr "100" - -#: ui/glade/log.glade.h:2 -msgid "Affected File(s)" -msgstr "Påverkade fil(er)" - -#: ui/glade/log.glade.h:3 ui/glade/dialogs.glade.h:3 -msgid "Message" -msgstr "Meddelande" - -#: ui/glade/log.glade.h:4 -msgid "Revisions Table" -msgstr "Revisionstabell" - -#: ui/glade/log.glade.h:5 -msgid "Limit:" -msgstr "Gräns:" - -#: ui/glade/log.glade.h:7 -msgid "Log" -msgstr "Logg" - -#: ui/glade/log.glade.h:9 -msgid "Refresh" -msgstr "Uppdatera" - -#: ui/glade/log.glade.h:10 -msgid "Showing Revisions:" -msgstr "Visar revisioner:" - -#: ui/glade/log.glade.h:11 -msgid "Stop on copy" -msgstr "Stopp vid kopia" - -#: ui/glade/merge.glade.h:1 -msgid "From URL" -msgstr "Från URL" - -#: ui/glade/merge.glade.h:2 -msgid "From: (URL and revision to merge)" -msgstr "Från: (URL och revision sammanfogning)" - -#: ui/glade/merge.glade.h:3 ui/glade/checkout.glade.h:1 -msgid "Options" -msgstr "Alternativ" - -#: ui/glade/merge.glade.h:4 -msgid "Revision Range" -msgstr "Revisionsspan" - -#: ui/glade/merge.glade.h:5 -msgid "To: (URL and revision to merge)" -msgstr "Till: (URL och revision att sammanfoga)" - -#: ui/glade/merge.glade.h:6 -msgid "URL to merge from" -msgstr "URL att sammanfoga från" - -#: ui/glade/merge.glade.h:7 -msgid "Working Copy" -msgstr "Arbetskopia" - -#: ui/glade/merge.glade.h:8 -msgid "" -"Choose this method if you have made some changes to a branch and wish to " -"merge your changes with another branch." -msgstr "" -"Välj denna metod om du har gjort ändringar i en gren och vill sammanfoga " -"dina ändringar med en annan gren." - -#: ui/glade/merge.glade.h:9 -msgid "" -"Choose this method if you wish to merge two different branches into your " -"working copy." -msgstr "" -"Välj den här metoden om du vill sammanfoga två olika grenar i din " -"arbetskopia." - -#: ui/glade/merge.glade.h:11 -msgid "Ignore ancestry" -msgstr "Ignorera anor" - -#: ui/glade/merge.glade.h:12 -msgid "Merge Assistant" -msgstr "Sammanfogningsassistent" - -#: ui/glade/merge.glade.h:13 -msgid "Merge a range of revisions" -msgstr "Sammanfoga ett span av revisioner" - -#: ui/glade/merge.glade.h:14 -msgid "Merge two different trees" -msgstr "Sammanfoga två olika träd" - -#: ui/glade/merge.glade.h:15 -msgid "Only record the merge" -msgstr "Registrera endast sammanfogningen" - -#: ui/glade/merge.glade.h:16 ui/glade/checkout.glade.h:9 -#: ui/glade/update.glade.h:5 -msgid "Recursive" -msgstr "Rekursiv" - -#: ui/glade/merge.glade.h:19 -msgid "Test Merge" -msgstr "Test sammanfoga" - -#: ui/glade/merge.glade.h:20 -msgid "" -"Use the log dialog to select the revisions that you wish to merge. Or write " -"out the revisions manually, each separated by a comma. You can specify a " -"revision range by a dash. \n" -"\n" -"Example: 4-7,9,11,15-HEAD\n" -"\n" -"To merge all revisions, leave the box empty." -msgstr "" -"Använd logg dialogrutan för att välja de revisioner som du vill sammanfoga. " -"Eller skriv ut revisionerna manuellt, separerade med ett kommatecken. Du kan " -"ange ett revisionsspan med ett bindestreck.\n" -"\n" -"Exempel: 4-7,9,11,15-HEAD\n" -"\n" -"För att sammanfoga alla revisioner, lämna rutan tom." - -#: ui/glade/settings.glade.h:1 -msgid "Authentication" -msgstr "Autentisering" - -#: ui/glade/settings.glade.h:2 -msgid "Log Messages" -msgstr "Loggmeddelanden" - -#: ui/glade/settings.glade.h:3 -msgid "Logging Options" -msgstr "Logg alternativ" - -#: ui/glade/settings.glade.h:4 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: ui/glade/settings.glade.h:5 -msgid "Program used to browse repositories" -msgstr "Program som används för att bläddra i arkiv" - -#: ui/glade/settings.glade.h:6 -msgid "Program used to compare files" -msgstr "Program som används för att jämföra filer" - -#: ui/glade/settings.glade.h:7 -msgid "URL History" -msgstr "URL Historik" - -#: ui/glade/settings.glade.h:8 ui/glade/checkout.glade.h:4 -msgid "Browse..." -msgstr "Bläddra..." - -#: ui/glade/settings.glade.h:9 -msgid "Clear your authentication information" -msgstr "Rensa autentiseringsinformation" - -#: ui/glade/settings.glade.h:10 -msgid "Enable emblems" -msgstr "Aktivera emblem" - -#: ui/glade/settings.glade.h:11 -msgid "Enable file attributes" -msgstr "Aktivera filattribut" - -#: ui/glade/settings.glade.h:12 -msgid "Enable recursive status checks" -msgstr "Aktivera rekursiva statuskontroller" - -#: ui/glade/settings.glade.h:13 -msgid "External Programs" -msgstr "Externa program" - -#: ui/glade/settings.glade.h:14 -msgid "General" -msgstr "Allmänt" - -#: ui/glade/settings.glade.h:15 -msgid "Language:" -msgstr "Språk:" - -#: ui/glade/settings.glade.h:16 -msgid "Logging" -msgstr "Loggning" - -#: ui/glade/settings.glade.h:17 -msgid "Minimum level to log" -msgstr "Lägsta nivå att logga" - -#: ui/glade/settings.glade.h:18 -msgid "Number of URLs to remember" -msgstr "Antal URLer att minnas" - -#: ui/glade/settings.glade.h:19 -msgid "Number of messages to remember" -msgstr "Antal meddelande att minnas" - -#: ui/glade/settings.glade.h:20 -msgid "Saved Data" -msgstr "Sparad data" - -#: ui/glade/settings.glade.h:21 lib/extensions/nautilus/RabbitVCS.py:1043 -msgid "Settings" -msgstr "Inställningar" - -#: ui/glade/settings.glade.h:22 -msgid "Show new version on the right side" -msgstr "Visa nya versionen på höger sida" - -#: ui/glade/settings.glade.h:23 -msgid "Type:" -msgstr "Typ:" - -#: ui/glade/cleanup.glade.h:2 -msgid "" -"Cleanup Requested....\n" -"\n" -"Begin working copy cleanup?" -msgstr "" -"Rensning begärd ....\n" -"\n" -"Börja rensa i arbets kopian?" - -#: ui/glade/dialogs.glade.h:1 -msgid "Certificate Details" -msgstr "Certifikatdetaljer" - -#: ui/glade/dialogs.glade.h:2 -msgid "Edit Property Details" -msgstr "Redigera egenskapsdetaljer" - -#: ui/glade/dialogs.glade.h:4 -msgid "Please add your authentication details" -msgstr "Lägg till autentiseringsdetaljer" - -#: ui/glade/dialogs.glade.h:5 -msgid "Previous Messages" -msgstr "Föregående Meddelanden" - -#: ui/glade/dialogs.glade.h:7 -msgid "" -"Are you sure you want to delete %item%?" -msgstr "" -"Är du säker på att du vill ta bort %item%?" - -#: ui/glade/dialogs.glade.h:8 -msgid "Accept Forever" -msgstr "Acceptera för alltid" - -#: ui/glade/dialogs.glade.h:9 -msgid "Accept Once" -msgstr "Acceptera en gång" - -#: ui/glade/dialogs.glade.h:11 -msgid "Authentication" -msgstr "Autentisering" - -#: ui/glade/dialogs.glade.h:12 -msgid "Check Certificate" -msgstr "Kontrollera certifikat" - -#: ui/glade/dialogs.glade.h:13 -msgid "Confirmation" -msgstr "Bekräftelse" - -#: ui/glade/dialogs.glade.h:14 -msgid "Delete Confirmation" -msgstr "Radera Bekräftelse" - -#: ui/glade/dialogs.glade.h:15 -msgid "Deny" -msgstr "Neka" - -#: ui/glade/dialogs.glade.h:16 -msgid "Fingerprint:" -msgstr "Fingeravtryck:" - -#: ui/glade/dialogs.glade.h:17 -msgid "Host:" -msgstr "Värd:" - -#: ui/glade/dialogs.glade.h:18 -msgid "Issuer:" -msgstr "Utgivare:" - -#: ui/glade/dialogs.glade.h:19 -msgid "Login:" -msgstr "Användarnamn:" - -#: ui/glade/dialogs.glade.h:21 -msgid "Password:" -msgstr "Lösenord:" - -#: ui/glade/dialogs.glade.h:23 -msgid "Property" -msgstr "Egenskap" - -#: ui/glade/dialogs.glade.h:24 -msgid "Property:" -msgstr "Egenskap:" - -#: ui/glade/dialogs.glade.h:25 -msgid "Realm:" -msgstr "Rike:" - -#: ui/glade/dialogs.glade.h:26 -msgid "Save Authentication" -msgstr "Spara autentisering" - -#: ui/glade/dialogs.glade.h:27 -msgid "The item(s) will be sent to the trash can." -msgstr "Dessa objekt kommer att skickas till papperskorgen." - -#: ui/glade/dialogs.glade.h:28 -msgid "Valid:" -msgstr "Giltig:" - -#: ui/glade/dialogs.glade.h:29 -msgid "Value:" -msgstr "Värde:" - -#: ui/glade/checkout.glade.h:6 -msgid "Destination:" -msgstr "Mål:" - -#: ui/glade/checkout.glade.h:8 ui/glade/update.glade.h:4 -msgid "Omit Externals" -msgstr "Uteslut externa" - -#: ui/glade/checkout.glade.h:12 -msgid "URL:" -msgstr "URL:" - -#: ui/glade/import.glade.h:1 -msgid "Import Message" -msgstr "Importera meddelande" - -#: ui/glade/import.glade.h:4 -msgid "Include ignored files" -msgstr "Inkludera ignorerade filer" - -#: ui/glade/update.glade.h:2 -msgid "Update Depth" -msgstr "Uppdateringsdjup" - -#: ui/glade/relocate.glade.h:1 -msgid "Change the repository of your working copy" -msgstr "Ändra arkiv till din arbetskopia" - -#: lib/extensions/nautilus/RabbitVCS.py:362 -msgid "Debug" -msgstr "Felsök" - -#: lib/extensions/nautilus/RabbitVCS.py:375 -msgid "DBus" -msgstr "DBus" - -#: lib/extensions/nautilus/RabbitVCS.py:388 -msgid "Start/Restart Service" -msgstr "Starta/Starta om tjänsten" - -#: lib/extensions/nautilus/RabbitVCS.py:404 -msgid "Exit Service" -msgstr "Avsluta tjänsten" - -#: lib/extensions/nautilus/RabbitVCS.py:422 -msgid "Bugs" -msgstr "Buggar" - -#: lib/extensions/nautilus/RabbitVCS.py:435 -msgid "Test Asynchronicity" -msgstr "Testa Asynchronicity" - -#: lib/extensions/nautilus/RabbitVCS.py:453 -msgid "Open Shell" -msgstr "Öppna Skal" - -#: lib/extensions/nautilus/RabbitVCS.py:469 -msgid "Refresh Status" -msgstr "Uppdatera Status" - -#: lib/extensions/nautilus/RabbitVCS.py:486 -msgid "Debug Revert" -msgstr "Debug återställ" - -#: lib/extensions/nautilus/RabbitVCS.py:487 -msgid "Reverts everything it sees" -msgstr "Återställer allt den ser" - -#: lib/extensions/nautilus/RabbitVCS.py:502 -msgid "Invalidate" -msgstr "Ogiltigförklara" - -#: lib/extensions/nautilus/RabbitVCS.py:503 -msgid "Force an invalidate_extension_info() call" -msgstr "Tvinga fram ett invalidate_extension_info() anrop" - -#: lib/extensions/nautilus/RabbitVCS.py:518 -msgid "Add Emblem" -msgstr "Lägg till emblem" - -#: lib/extensions/nautilus/RabbitVCS.py:519 -msgid "Add an emblem" -msgstr "Lägg till ett emblem" - -#: lib/extensions/nautilus/RabbitVCS.py:537 -msgid "Check out a working copy" -msgstr "Hämta en arbetskopia" - -#: lib/extensions/nautilus/RabbitVCS.py:553 -msgid "Update a working copy" -msgstr "Uppdatera en arbetskopia" - -#: lib/extensions/nautilus/RabbitVCS.py:569 -msgid "Commit modifications to the repository" -msgstr "Skicka ändringar till arkivet" - -#: lib/extensions/nautilus/RabbitVCS.py:584 -msgid "RabbitVCS" -msgstr "RabbitVCS" - -#: lib/extensions/nautilus/RabbitVCS.py:598 -msgid "View the modifications made to a file" -msgstr "Visa ändringar som gjorts i en fil" - -#: lib/extensions/nautilus/RabbitVCS.py:613 -msgid "Show Log" -msgstr "Visa Logg" - -#: lib/extensions/nautilus/RabbitVCS.py:614 -msgid "Show a file's log information" -msgstr "Visa en fils logginformation" - -#: lib/extensions/nautilus/RabbitVCS.py:639 -msgid "Schedule an item to be added to the repository" -msgstr "Schemalägg ett objekt som ska läggas till i arkivet" - -#: lib/extensions/nautilus/RabbitVCS.py:663 -msgid "Ignore an item" -msgstr "Ignorera ett objekt" - -#: lib/extensions/nautilus/RabbitVCS.py:678 -msgid "Ignore all files with this extension" -msgstr "Ignorera alla filer med denna filändelse" - -#: lib/extensions/nautilus/RabbitVCS.py:703 -msgid "Update to revision..." -msgstr "Uppdatera till revision..." - -#: lib/extensions/nautilus/RabbitVCS.py:704 -msgid "Update a file to a specific revision" -msgstr "Uppdatera till angiven version" - -#: lib/extensions/nautilus/RabbitVCS.py:719 -msgid "Rename..." -msgstr "Byt namn..." - -#: lib/extensions/nautilus/RabbitVCS.py:720 -msgid "Schedule an item to be renamed on the repository" -msgstr "Schemalägg ett objekt som ska byta namn i arkivet" - -#: lib/extensions/nautilus/RabbitVCS.py:736 -msgid "Schedule an item to be deleted from the repository" -msgstr "Schemalägg ett objekt som ska tas bort från arkivet" - -#: lib/extensions/nautilus/RabbitVCS.py:752 -msgid "Revert an item to its unmodified state" -msgstr "Återställ ett objekt till dess omodifierade form" - -#: lib/extensions/nautilus/RabbitVCS.py:768 -msgid "Mark a conflicted item as resolved" -msgstr "Markera ett tvistande objektet som löst" - -#: lib/extensions/nautilus/RabbitVCS.py:783 -msgid "Relocate..." -msgstr "Flytta..." - -#: lib/extensions/nautilus/RabbitVCS.py:784 -msgid "Relocate your working copy" -msgstr "Flytta din arbetskopia" - -#: lib/extensions/nautilus/RabbitVCS.py:799 -msgid "Get Lock..." -msgstr "Hämta Lås..." - -#: lib/extensions/nautilus/RabbitVCS.py:800 -msgid "Locally lock items" -msgstr "Lås objekt lokalt" - -#: lib/extensions/nautilus/RabbitVCS.py:815 -msgid "Release Lock..." -msgstr "Släpp lås..." - -#: lib/extensions/nautilus/RabbitVCS.py:816 -msgid "Release lock on an item" -msgstr "Släpp lås på ett objekt" - -#: lib/extensions/nautilus/RabbitVCS.py:832 -msgid "Clean up working copy" -msgstr "Rensa upp arbetskopia" - -#: lib/extensions/nautilus/RabbitVCS.py:857 -msgid "Export a working copy or repository with no versioning information" -msgstr "Exportera en fungerande kopia eller arkiv utan versionsinformation" - -#: lib/extensions/nautilus/RabbitVCS.py:872 -msgid "Create Repository here" -msgstr "Skapa arkiv här" - -#: lib/extensions/nautilus/RabbitVCS.py:873 -msgid "Create a repository in a folder" -msgstr "Skapa ett arkiv i en mapp" - -#: lib/extensions/nautilus/RabbitVCS.py:889 -msgid "Import an item into a repository" -msgstr "Importera ett objekt till ett arkiv" - -#: lib/extensions/nautilus/RabbitVCS.py:913 -msgid "Branch/tag..." -msgstr "Gren/tagg..." - -#: lib/extensions/nautilus/RabbitVCS.py:914 -msgid "Copy an item to another location in the repository" -msgstr "Kopiera et objekt till en annan plats i arkivet" - -#: lib/extensions/nautilus/RabbitVCS.py:929 -msgid "Switch..." -msgstr "Växla..." - -#: lib/extensions/nautilus/RabbitVCS.py:930 -msgid "Change the repository location of a working copy" -msgstr "Ändra arkivets plats för en arbets kopia" - -#: lib/extensions/nautilus/RabbitVCS.py:945 -msgid "Merge..." -msgstr "Sammanfoga..." - -#: lib/extensions/nautilus/RabbitVCS.py:946 -msgid "A wizard with steps for merging" -msgstr "En guide med åtgärder för sammanfogning" - -#: lib/extensions/nautilus/RabbitVCS.py:970 -msgid "Annotate..." -msgstr "Kommentera..." - -#: lib/extensions/nautilus/RabbitVCS.py:971 -msgid "Annotate a file" -msgstr "Kommentera en fil" - -#: lib/extensions/nautilus/RabbitVCS.py:996 -msgid "View the properties of an item" -msgstr "Visa egenskaperna för ett objekt" - -#: lib/extensions/nautilus/RabbitVCS.py:1027 -msgid "Help" -msgstr "Hjälp" - -#: lib/extensions/nautilus/RabbitVCS.py:1028 -msgid "View help" -msgstr "Visa Hjälp" - -#: lib/extensions/nautilus/RabbitVCS.py:1044 -msgid "View or change RabbitVCS settings" -msgstr "Visa eller ändra RabbitVCS inställningar" - -#: lib/extensions/nautilus/RabbitVCS.py:1060 -msgid "About RabbitVCS" -msgstr "Om RabbitVCS" - -#: lib/vcs/svn/__init__.py:111 lib/vcs/svn/__init__.py:120 -#: lib/vcs/svn/__init__.py:127 -msgid "Added" -msgstr "Tillagd" - -#: lib/vcs/svn/__init__.py:112 lib/vcs/svn/__init__.py:128 -msgid "Copied" -msgstr "Kopierad" - -#: lib/vcs/svn/__init__.py:113 lib/vcs/svn/__init__.py:119 -msgid "Deleted" -msgstr "Borttagen" - -#: lib/vcs/svn/__init__.py:114 -msgid "Restored" -msgstr "Återställd" - -#: lib/vcs/svn/__init__.py:115 -msgid "Reverted" -msgstr "Backad" - -#: lib/vcs/svn/__init__.py:116 -msgid "Failed Revert" -msgstr "Misslyckad backning" - -#: lib/vcs/svn/__init__.py:117 -msgid "Resolved" -msgstr "Löst" - -#: lib/vcs/svn/__init__.py:118 -msgid "Skipped" -msgstr "Överhoppad" - -#: lib/vcs/svn/__init__.py:121 -msgid "Updated" -msgstr "Uppdaterad" - -#: lib/vcs/svn/__init__.py:123 lib/vcs/svn/__init__.py:125 -msgid "External" -msgstr "Extern" - -#: lib/vcs/svn/__init__.py:126 -msgid "Modified" -msgstr "Modifierad" - -#: lib/vcs/svn/__init__.py:129 -msgid "Replaced" -msgstr "Ersatt" - -#: lib/vcs/svn/__init__.py:130 lib/vcs/svn/__init__.py:149 -msgid "Changed" -msgstr "Ändrad" - -#: lib/vcs/svn/__init__.py:131 -msgid "Annotated" -msgstr "Kommenterad" - -#: lib/vcs/svn/__init__.py:133 -msgid "Unlocked" -msgstr "Upplåst" - -#: lib/vcs/svn/__init__.py:134 -msgid "Failed Lock" -msgstr "Misslyckades låsa" - -#: lib/vcs/svn/__init__.py:135 -msgid "Failed Unlock" -msgstr "Misslyckades låsa upp" - -#: lib/vcs/svn/__init__.py:144 -msgid "Inapplicable" -msgstr "Oapplicerbart" - -#: lib/vcs/svn/__init__.py:145 -msgid "Unknown" -msgstr "Okänd" - -#: lib/vcs/svn/__init__.py:146 -msgid "Unchanged" -msgstr "Oförändrad" - -#: lib/vcs/svn/__init__.py:147 -msgid "Missing" -msgstr "Saknas" - -#: lib/vcs/svn/__init__.py:148 -msgid "Obstructed" -msgstr "Blockerad" - -#: lib/vcs/svn/__init__.py:150 -msgid "Merged" -msgstr "Sammanfogad" - -#: lib/vcs/svn/__init__.py:151 -msgid "Conflicted" -msgstr "Tvistande" diff -Nru rabbitvcs-0.13.1/rabbitvcs/services/checkers/loopedchecker.py rabbitvcs-0.15.0.5/rabbitvcs/services/checkers/loopedchecker.py --- rabbitvcs-0.13.1/rabbitvcs/services/checkers/loopedchecker.py 2010-03-27 08:45:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/services/checkers/loopedchecker.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,169 +0,0 @@ -# -# Copyright (C) 2009 Jason Heeris -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -""" -Convenience script for performing status checks in a separate process. This -script is NOT meant to be run from the command line - the results are sent over -stdout as a byte stream (ie. the pickled results of the status check). -""" - -import cPickle -import sys -import subprocess - -import rabbitvcs.lib.vcs - -import rabbitvcs.util._locale -import rabbitvcs.util.vcs - -from rabbitvcs.services.statuschecker import status_error - -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.statuschecker_proc") - -PICKLE_PROTOCOL = cPickle.HIGHEST_PROTOCOL - -def Main(): - """ - Loop indefinitely, performing VCS status checks on paths (and arguments) - sent as pickled data over stdin. The results will be pickled and sent as a - byte stream over stdout. - - The loop will temrinate if there is an I/O error. - """ - # NOTE: we cannot pickle status_list directly. It needs to be processed - # here. - global log - log = Log("rabbitvcs.statuschecker:PROCESS") - - vcs_client = rabbitvcs.lib.vcs.create_vcs_instance() - pickler = cPickle.Pickler(sys.stdout, PICKLE_PROTOCOL) - unpickler = cPickle.Unpickler(sys.stdin) - - while True: - try: - (path, recurse, summary) = unpickler.load() - except EOFError: - # This probably means our parent service has been killed - log.debug("Checker sub-process exiting") - sys.exit(0) - - try: - # log.debug("Checking: %s" % path) - status_list = vcs_client.status(path, recurse=recurse) - statuses = [(status.path, str(status.text_status), str(status.prop_status)) - for status in status_list] - - # NOTE: this is useful for debugging. You can tweak MAGIC_NUMBER to - # make status checks appear to take longer or shorter. -# import time, math, os.path -# statuses = [] -# MAGIC_NUMBER = 1 -# if os.path.isdir(path): -# for root, dirnames, fnames in os.walk(path): -# names = ["."] -# names.extend(dirnames) -# names.extend(fnames) -# for name in names: -# thing = os.path.abspath(os.path.join(root, name)) -# if "/.svn" not in thing: -# num = 0 -# while num < 10: -# math.sin(num) -# num+=1 -# statuses.append( (thing, "added", "normal") ) -# else: -# num = 0 -# while num < 10: -# math.sin(num) -# num+=1 -# statuses.append( (path, "added", "none") ) - - except Exception, ex: - log.exception(ex) - statuses = [status_error(path)] - - if summary: - statuses = (statuses, - rabbitvcs.util.vcs.summarize_status_pair_list(path, - statuses)) - - pickler.dump(statuses) - sys.stdout.flush() - pickler.clear_memo() - del statuses - - -class StatusChecker: - """ A class for performing status checks in a separate process. - - Since C extensions may lock the GIL, preventing multithreading and making - our cache service block, we can do the hard parts in another process. Since - we're transferring a LOT of data, we pickle it. - """ - - def __init__(self): - """ Creates a new StatusChecker. This should do ALL the subprocess - management necessary. - """ - self.sc_proc = subprocess.Popen([sys.executable, __file__], - stdin = subprocess.PIPE, - stdout = subprocess.PIPE) - self.pickler = cPickle.Pickler(self.sc_proc.stdin, PICKLE_PROTOCOL) - self.unpickler = cPickle.Unpickler(self.sc_proc.stdout) - - def check_status(self, path, recurse, summary): - """ Performs a status check in a subprocess, blocking until the check is - done. Even though we block here, this means that other threads can - continue to run. - - The returned status data can have two forms. If a summary is requested, - it is: - - (status list, summarised dict) - - ...where the list is of the form - - [(path1, text_status1, prop_status1), (path2, ...), ...] - - ...and the dict is: - - {path: {"text_status": text_status, - "prop_status": prop_status}} - - If no summary is requested, the return value is just the status list. - """ - self.pickler.dump((path, bool(recurse), bool(summary))) - self.sc_proc.stdin.flush() - statuses = self.unpickler.load() - return statuses - -if __name__ == '__main__': - # I have deliberately avoided rigourous input checking since this script is - # only designed to be called from our extension code. - - rabbitvcs.util._locale.initialize_locale() - - # Uncomment for profiling -# import rabbitvcs.lib.helper -# import cProfile -# import os, os.path -# profile_data_file = os.path.join( -# rabbitvcs.lib.helper.get_home_folder(), -# "rvcs_checker.stats") -# cProfile.run("Main()", profile_data_file) - Main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/services/checkers/simplechecker.py rabbitvcs-0.15.0.5/rabbitvcs/services/checkers/simplechecker.py --- rabbitvcs-0.13.1/rabbitvcs/services/checkers/simplechecker.py 2010-04-01 18:04:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/services/checkers/simplechecker.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,125 +0,0 @@ -# -# Copyright (C) 2009 Jason Heeris -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -""" -Convenience script for performing status checks in a separate process. This -script is NOT meant to be run from the command line - the results are sent over -stdout as a byte stream (ie. the pickled results of the status check). -""" - -import cPickle -import sys -import subprocess - -import rabbitvcs.util._locale -import rabbitvcs.util.vcs -import rabbitvcs.lib.vcs - -from rabbitvcs.services.statuschecker import status_error - -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.statuschecker_proc") - -PICKLE_PROTOCOL = cPickle.HIGHEST_PROTOCOL - -def Main(path, recurse, summary): - """ - Perform a VCS status check on the given path (recursive as indicated). The - results will be pickled and sent as a byte stream over stdout. - """ - # NOTE: we cannot pickle status_list directly. It needs to be processed - # here. - try: - vcs_client = rabbitvcs.lib.vcs.create_vcs_instance() - status_list = vcs_client.status(path, recurse=recurse) - statuses = [(status.path, - str(status.text_status), - str(status.prop_status)) for status in status_list] - - except Exception, ex: - log.exception(ex) - statuses = [status_error(path)] - - if summary: - statuses = (statuses, - rabbitvcs.util.vcs.summarize_status_pair_list(path, - statuses)) - - - cPickle.dump(statuses, sys.stdout) - sys.stdout.flush() - -class StatusChecker: - """ A class for performing status checks in a separate process. - - Since C extensions may lock the GIL, preventing multithreading and making - our cache service block, we can do the hard parts in another process. Since - we're transferring a LOT of data, we pickle it. - - This class differs from "loopedchecker.py" in that it creates a separate - process for EACH request. This might seem dumb - the process creation - overhead is (I hear) small on Linux, but it all adds up. However, this is - a completely rock-solid way to get around potential memory leaks in - C extension code. - - A better way would be to put more status monitoring into the looped - checker... - """ - - def check_status(self, path, recurse, summary): - """ Performs a status check in a subprocess, blocking until the check is - done. Even though we block here, this means that other threads can - continue to run. - - The returned status data can have two forms. If a summary is requested, - it is: - - (status list, summarised dict) - - ...where the list is of the form - - [(path1, text_status1, prop_status1), (path2, ...), ...] - - ...and the dict is: - - {path: {"text_status": text_status, - "prop_status": prop_status}} - - If no summary is requested, the return value is just the status list. - """ - - sc_process = subprocess.Popen([sys.executable, __file__, - path.encode("utf-8"), - str(recurse), - str(summary)], - stdin = subprocess.PIPE, - stdout = subprocess.PIPE) - statuses = cPickle.load(sc_process.stdout) - return statuses - -if __name__ == '__main__': - # I have deliberately avoided rigourous input checking since this script is - # only designed to be called from our extension code. - - rabbitvcs.util._locale.initialize_locale() - - # This is correct, and should work across all locales and encodings. - path = unicode(sys.argv[1], "utf-8") - recurse = (sys.argv[2] in ["True", "1"]) - summary = (sys.argv[3] in ["True", "1"]) - - Main(path, recurse, summary) diff -Nru rabbitvcs-0.13.1/rabbitvcs/services/checkerservice.py rabbitvcs-0.15.0.5/rabbitvcs/services/checkerservice.py --- rabbitvcs-0.13.1/rabbitvcs/services/checkerservice.py 2010-04-01 18:04:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/services/checkerservice.py 2011-10-17 23:18:06.000000000 +0000 @@ -2,17 +2,17 @@ # Copyright (C) 2009 Jason Heeris # Copyright (C) 2009 by Bruce van der Kooij # Copyright (C) 2009 by Adam Plumb # -# +# # RabbitVCS 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 2 of the License, or # (at your option) any later version. -# +# # RabbitVCS 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 RabbitVCS; If not, see . # @@ -32,7 +32,7 @@ 4. The service starter method looks for a DBUS object with the given service name and object path; if none is found, it creates it by running this script - + RabbitVCS can then call the stub methods, getting status info via the CheckStatus method itself, or more likely from a callback upon completion of a status check. @@ -45,138 +45,181 @@ import os, os.path import sys +import simplejson -import gobject try: - # Older distributions will not have a glib module. For them, they must - # still use the gobject module - import glib - HAS_GLIB = True + from gi.repository import GObject as gobject except ImportError: - HAS_GLIB = False + import gobject + +try: + from gi.repository import GLib as glib +except: + import glib import dbus import dbus.glib # FIXME: this might actually already set the default loop -try: - import dbus.mainloop.glib -except ImportError, e: - # Older distributions do not have this module - pass - +import dbus.mainloop.glib import dbus.service +import rabbitvcs.util.decorators import rabbitvcs.util._locale -import rabbitvcs.lib.helper +import rabbitvcs.util.helper import rabbitvcs.services.service -from rabbitvcs.services.statuscheckerplus import StatusCheckerPlus +from rabbitvcs.services.statuschecker import StatusChecker -from rabbitvcs.lib.log import Log +import rabbitvcs.vcs.status + +from rabbitvcs.util.log import Log log = Log("rabbitvcs.services.checkerservice") +from rabbitvcs import version as SERVICE_VERSION + INTERFACE = "org.google.code.rabbitvcs.StatusChecker" OBJECT_PATH = "/org/google/code/rabbitvcs/StatusChecker" SERVICE = "org.google.code.rabbitvcs.RabbitVCS.Checker" TIMEOUT = 60*15*100 # seconds -def idle_add(callback, *args, **kwargs): - if HAS_GLIB: - glib.idle_add(callback, *args, **kwargs) +def find_class(module, name): + """ Given a module name and a class name, return the actual type object. + """ + # From Python stdlib pickle module source + __import__(module) + mod = sys.modules[module] + klass = getattr(mod, name) + return klass + +def encode_status(status): + """ Before encoding a status object to JSON, we need to turn it into + something simpler. + """ + return status.__getstate__() + +def decode_status(json_dict): + """ Once we get a JSON encoded string out the other side of DBUS, we need to + reconstitute the original object. This method is based on the pickle module + in the Python stdlib. + """ + cl = find_class(json_dict['__module__'], json_dict['__type__']) + st = None + if cl in rabbitvcs.vcs.status.STATUS_TYPES: + st = cl.__new__(cl) + st.__setstate__(json_dict) + elif json_dict.has_key('path'): + log.warning("Could not deduce status class: %s" % json_dict['__type__']) + st = rabbitvcs.vcs.status.Status.status_error(json_dict['path']) else: - gobject.idle_add(callback, *args, **kwargs) + raise TypeError("RabbitVCS status object has no path") + return st class StatusCheckerService(dbus.service.Object): """ StatusCheckerService objects wrap a StatusCheckerPlus instance, exporting methods that can be called via DBUS. - + There should only be a single such object running in a separate process from the GUI (ie. do not create this in the Nautilus extension code, you should use a StatusCheckerStub there instead). """ - + def __init__(self, connection, mainloop): """ Creates a new status checker wrapper service, with the given DBUS connection. - + The mainloop argument is needed for process management (eg. calling Quit() for graceful exiting). - + @param connection: the DBUS connection (eg. session bus, system bus) @type connection: a DBUS connection object - + @param mainloop: the main loop that DBUS is using @type mainloop: any main loop with a quit() method """ dbus.service.Object.__init__(self, connection, OBJECT_PATH) - self.mainloop = mainloop + self.encoder = simplejson.JSONEncoder(default=encode_status, + separators=(',', ':')) + + self.mainloop = mainloop + # Start the status checking daemon so we can do requests in the # background - self.status_checker = StatusCheckerPlus() - + self.status_checker = StatusChecker() + @dbus.service.method(INTERFACE) def ExtraInformation(self): return self.status_checker.extra_info() - + @dbus.service.method(INTERFACE) def MemoryUsage(self): - own_mem = rabbitvcs.lib.helper.process_memory(os.getpid()) - checker_mem = self.status_checker.get_memory_usage() - + own_mem = rabbitvcs.util.helper.process_memory(os.getpid()) + checker_mem = self.status_checker.get_memory_usage() + return own_mem + checker_mem - + @dbus.service.method(INTERFACE) def PID(self): return os.getpid() - + @dbus.service.method(INTERFACE) def CheckerType(self): return self.status_checker.CHECKER_NAME - - @dbus.service.signal(INTERFACE) - def CheckFinished(self, path, statuses): - """ Empty method for connection status check callbacks. This is a DBUS - signal, and can be "connected" to as per the python DBUS docs. - """ - pass - - @dbus.service.method(INTERFACE) + + @dbus.service.method(INTERFACE, in_signature='sbbb', out_signature='s') def CheckStatus(self, path, recurse=False, invalidate=False, - summary=False, callback=False): + summary=False): """ Requests a status check from the underlying status checker. - - See the StatusCheckerPlus documentation for details of the parameters, - but note that "callback" behaves differently. The actual callback that - is given to the status checker is the "CheckFinished" method of this - object, if callback is True. - - Any entity wanting notification of a completed status check should - connect to the DBUS signal "CheckFinished", and sort out its own - logic from there. - - @param callback: whether or not to notify when a status check is - complete - @type callback: boolean """ - if callback: - callback = self.CheckFinished - else: - callback = None - return self.status_checker.check_status(u"" + path, recurse=recurse, - invalidate=invalidate, - summary=summary, - callback=callback) + status = self.status_checker.check_status(unicode(path), + recurse=recurse, + summary=summary, + invalidate=invalidate) + + return self.encoder.encode(status) + + @dbus.service.method(INTERFACE, in_signature='as', out_signature='s') + def GenerateMenuConditions(self, paths): + upaths = [] + for path in paths: + upaths.append(unicode(path)) + path_dict = self.status_checker.generate_menu_conditions(upaths) + return simplejson.dumps(path_dict) + + @dbus.service.method(INTERFACE) + def CheckVersionOrDie(self, version): + """ + If the version passed does not match the version of RabbitVCS available + when this service started, the service will exit. The return value is + None if the versions match, else it's the PID of the service (useful for + waiting for the process to exit). + """ + if not self.CheckVersion(version): + log.warning("Version mismatch, quitting checker service " \ + "(service: %s, extension: %s)" \ + % (SERVICE_VERSION, version)) + return self.Quit() + + return None + + @dbus.service.method(INTERFACE) + def CheckVersion(self, version): + """ + Return True iff the version of RabbitVCS imported by this service is the + same as that passed in (ie. used by extension code). + """ + return version == SERVICE_VERSION + @dbus.service.method(INTERFACE) def Quit(self): """ Quits the service, performing any necessary cleanup operations. You can call this from the command line with: - + dbus-send --print-reply \ --dest=org.google.code.rabbitvcs.RabbitVCS.Checker \ /org/google/code/rabbitvcs/StatusChecker \ org.google.code.rabbitvcs.StatusChecker.Quit - + If calling this programmatically, then you can do "os.waitpid(pid, 0)" on the returned PID to prevent a zombie process. """ @@ -184,97 +227,186 @@ log.debug("Quitting main loop...") self.mainloop.quit() return self.PID() - - + + class StatusCheckerStub: """ StatusCheckerStub objects contain methods that call an actual status checker running in another process. - + These objects should be created by the GUI as needed (eg. the nautilus extension code). - - Note that even though the status checker itself takes a callback for each - call to "check_status", this stub requires it to be provided at - initialisation. The callback can be triggered (or not) using the boolean - callback parameter of the "check_status" method. - + The inter-process communication is via DBUS. """ - - def __init__(self, callback=None): + + def __init__(self): """ Creates an object that can call the VCS status checker via DBUS. - + If there is not already a DBUS object with the path "OBJECT_PATH", we create one by starting a new Python process that runs this file. - - @param callback: the function to call when status checks are completed - (see the StatusCheckerPlus method documentation for - details) """ self.session_bus = dbus.SessionBus() - self.callback = callback - + self.decoder = simplejson.JSONDecoder(object_hook=decode_status) self.status_checker = None - start() self._connect_to_checker() - + def _connect_to_checker(self): # Start the status checker, if it's not running this should start it up. # Otherwise it leaves it alone. # start() - + # Try to get a new checker try: self.status_checker = self.session_bus.get_object(SERVICE, OBJECT_PATH) - if self.callback: - self.status_checker.connect_to_signal("CheckFinished", - self.status_callback, - dbus_interface=INTERFACE) except dbus.DBusException, ex: # There is not much we should do about this... log.exception(ex) - - def status_callback(self, *args, **kwargs): - """ Notifies the callback of a completed status check. - - The callback will be performed when the glib main loop is idle. This is - basically a way of making this a lower priority than direct calls to - "check_status", which need to return ASAP. - """ - idle_add(self.callback, *args, **kwargs) - # Switch to this method to just call it straight from here: - # self.callback(*args, **kwargs) - - def check_status(self, path, recurse=False, invalidate=False, - summary=False, callback=False): - """ Check the VCS status of the given path. + + def assert_version(self, version): + """ + This will use the CheckVersionOrDie method to ensure that either the + checker service currently running has the correct version, or that it + is quit and restarted. - This is a pass-through method to the check_status method of the DBUS - service (which is, in turn, a wrapper around the real status checker). + Note that if the version of the newly started checker still doesn't + match, nothing is done. """ + try: + pid = self.status_checker.CheckVersionOrDie(version) + except dbus.DBusException, ex: + log.exception(ex) + self._connect_to_checker() + else: + if pid is not None: + try: + os.waitpid(pid, 0) + except OSError: + # Process already gone... + pass + start() + self._connect_to_checker() + + try: + if not self.status_checker.CheckVersion(version): + log.warning("Version mismatch even after restart!") + except dbus.DBusException, ex: + log.exception(ex) + self._connect_to_checker() + + + def check_status_now(self, path, recurse=False, invalidate=False, + summary=False): + status = None + try: - status = self.status_checker.CheckStatus(path, recurse, invalidate, - summary, callback, - dbus_interface=INTERFACE, - timeout=TIMEOUT) + json_status = self.status_checker.CheckStatus(path, + recurse, invalidate, + summary, + dbus_interface=INTERFACE, + timeout=TIMEOUT) + status = self.decoder.decode(json_status) # Test client error problems :) # raise dbus.DBusException("Test") except dbus.DBusException, ex: log.exception(ex) - status = {path: {"text_status": "error", - "prop_status": "error"}} - if summary: - status = (status, status) - + + status = rabbitvcs.vcs.status.Status.status_error(path) + # Try to reconnect self._connect_to_checker() - + return status + + def check_status_later(self, path, callback, recurse=False, + invalidate=False, summary=False): + + def real_reply_handler(json_status): + # Note that this a closure referring to the outer functions callback + # parameter + status = self.decoder.decode(json_status) + assert status.path == path, "Status check returned the wrong path "\ + "(asked about %s, got back %s)" % \ + (path, status.path) + callback(status) + + def reply_handler(*args, **kwargs): + # The callback should be performed as a low priority task, so we + # keep Nautilus as responsive as possible. + gobject.idle_add(real_reply_handler, *args, **kwargs) + + def error_handler(dbus_ex): + log.exception(dbus_ex) + self._connect_to_checker() + callback(rabbitvcs.vcs.status.Status.status_error(path)) + + try: + self.status_checker.CheckStatus(path, + recurse, invalidate, + summary, + dbus_interface=INTERFACE, + timeout=TIMEOUT, + reply_handler=reply_handler, + error_handler=error_handler) + except dbus.DBusException, ex: + log.exception(ex) + callback(rabbitvcs.vcs.status.Status.status_error(path)) + # Try to reconnect + self._connect_to_checker() + + # @rabbitvcs.util.decorators.deprecated + # Can't decide whether this should be deprecated or not... -JH + def check_status(self, path, recurse=False, invalidate=False, + summary=False, callback=None): + """ Check the VCS status of the given path. + + This is a pass-through method to the check_status method of the DBUS + service (which is, in turn, a wrapper around the real status checker). + """ + if callback: + gobject.idle_add(self.check_status_later, + path, callback, recurse, invalidate, summary) + return rabbitvcs.vcs.status.Status.status_calc(path) + else: + return self.check_status_now(path, recurse, invalidate, summary) + + def generate_menu_conditions(self, provider, base_dir, paths, callback): + def real_reply_handler(json): + # Note that this a closure referring to the outer functions callback + # parameter + path_dict = simplejson.loads(json) + callback(provider, base_dir, paths, path_dict) + + def reply_handler(*args, **kwargs): + # The callback should be performed as a low priority task, so we + # keep Nautilus as responsive as possible. + gobject.idle_add(real_reply_handler, *args, **kwargs) + + def error_handler(dbus_ex): + log.exception(dbus_ex) + self._connect_to_checker() + callback(provider, base_dir, paths, {}) + + try: + self.status_checker.GenerateMenuConditions(paths, + dbus_interface=INTERFACE, + timeout=TIMEOUT, + reply_handler=reply_handler, + error_handler=error_handler) + except dbus.DBusException, ex: + log.exception(ex) + callback(provider, base_dir, paths, {}) + # Try to reconnect + self._connect_to_checker() + + def generate_menu_conditions_async(self, provider, base_dir, paths, callback): + gobject.idle_add(self.generate_menu_conditions, provider, base_dir, paths, callback) + return {} + def start(): """ Starts the checker service, via the utility method in "service.py". """ rabbitvcs.services.service.start_service(os.path.abspath(__file__), SERVICE, @@ -282,43 +414,45 @@ def Main(): """ The main point of entry for the checker service. - + This will set up the DBUS and glib extensions, the gobject/glib main loop, and start the service. """ global log log = Log("rabbitvcs.services.checkerservice:main") log.debug("Checker: starting service: %s (%s)" % (OBJECT_PATH, os.getpid())) - + # We need this to for the client to be able to do asynchronous calls dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) - + # The following calls are required to make DBus thread-aware and therefore # support the ability run threads. gobject.threads_init() dbus.glib.threads_init() - + # This registers our service name with the bus session_bus = dbus.SessionBus() service_name = dbus.service.BusName(SERVICE, session_bus) - + mainloop = gobject.MainLoop() - + checker_service = StatusCheckerService(session_bus, mainloop) - - # import cProfile - # import rabbitvcs.lib.helper - # profile_data_file = os.path.join( - # rabbitvcs.lib.helper.get_home_folder(), - # "rvcs_checker.stats") - # cProfile.run("mainloop.run()", profile_data_file) - - idle_add(sys.stdout.write, "Started status checker service\n") - idle_add(sys.stdout.flush) + + gobject.idle_add(sys.stdout.write, "Started status checker service\n") + gobject.idle_add(sys.stdout.flush) + mainloop.run() - + log.debug("Checker: ended service: %s (%s)" % (OBJECT_PATH, os.getpid())) if __name__ == "__main__": rabbitvcs.util._locale.initialize_locale() + + # import cProfile + # import rabbitvcs.util.helper + # profile_data_file = os.path.join( + # rabbitvcs.util.helper.get_home_folder(), + # "checkerservice.stats") + # cProfile.run("Main()", profile_data_file) + Main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/services/service.py rabbitvcs-0.15.0.5/rabbitvcs/services/service.py --- rabbitvcs-0.13.1/rabbitvcs/services/service.py 2009-11-09 10:45:44.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/services/service.py 2010-03-05 18:02:21.000000000 +0000 @@ -28,7 +28,7 @@ import dbus -from rabbitvcs.lib.log import Log +from rabbitvcs.util.log import Log log = Log("rabbitvcs.services.service") def start_service(script_file, dbus_service_name, dbus_object_path): diff -Nru rabbitvcs-0.13.1/rabbitvcs/services/statuscache.py rabbitvcs-0.15.0.5/rabbitvcs/services/statuscache.py --- rabbitvcs-0.13.1/rabbitvcs/services/statuscache.py 2010-04-01 18:04:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/services/statuscache.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,546 +0,0 @@ -# -# Copyright (C) 2009 Jason Heeris -# Copyright (C) 2009 by Bruce van der Kooij -# Copyright (C) 2009 by Adam Plumb # -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# -""" A VCS status cache which can be queried synchronously and asynchronously. - -The "check_status" method will return "as soon as possible", with either a -cached status or a "calculating" status. Callbacks can also be registered and -will be notified when a proper status check is done. -""" - - -from __future__ import with_statement - -import threading -from Queue import Queue - -# ATTENTION: Developers and hackers! -# The following lines allow you to select between different status checker -# implementations. Simply uncomment one to try it out - there's nothing else you -# have to do. - -# from rabbitvcs.services.checkerservice import StatusCheckerStub as StatusChecker -# from rabbitvcs.services.simplechecker import StatusChecker -# from rabbitvcs.services.statuschecker import StatusChecker -from rabbitvcs.services.checkers.loopedchecker import StatusChecker - -import rabbitvcs.util.vcs -import rabbitvcs.lib.vcs.svn - -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.services.statuscache") - -# FIXME: hard coded -# NOTE: try changing this to a few hundred, or a few thousand to check operation -# The debugging statements below will tell you how many items are being cached -MAX_CACHE_SIZE = 1000000 # Items - -def status_calculating(path): - """ Creates a "calculating" status for the given path. """ - return {path: {"text_status": "calculating", - "prop_status": "calculating"}} - -def status_unknown(path): - """ Creates an "unknown" status for the given path. """ - return {path: {"text_status": "unknown", - "prop_status": "unknown"}} - -def is_under_dir(base_path, other_path): - """ Checks whether the given "other_path" is under "base_path". - - Assumes: the paths are already absolute, normalised and that the path - separator is "/". - - Warning: this function is greatly simplified compared to something more - rigorous. This is because the Python stdlib path manipulation functions - are just too slow for proper use here. - - @param base_path: the path that is the possible ancestor (parent, etc) - @type base_path: string - an absolute, normalised, "/" separated path - - @param other_path: the path that is the possible descendant (child, etc) - @type other_path: string - an absolute, normalised, "/" separated path - - - """ - return (base_path == other_path or other_path.startswith(base_path + "/")) - -def is_directly_under_dir(base_path, other_path): - """ Checks whether the given "other_path" is EXACTLY ONE LEVEL under - "base_path". - - Assumes: the paths are already absolute, normalised and that the path - separator is "/". - - Warning: this function is greatly simplified compared to something more - rigorous. This is because the Python stdlib path manipulation functions - are just too slow for proper use here. - - @param base_path: the path that is the possible direct parent - @type base_path: string - an absolute, normalised, "/" separated path - - @param other_path: the path that is the possible direct child - @type other_path: string - an absolute, normalised, "/" separated path - """ - check_path = base_path + "/" - return (other_path.startswith(check_path) - and "/" not in other_path.replace(check_path, "", 1).rstrip("/")) - -def make_summary(path, statuses): - """ Simple convenience method to make the path summaries we pass back to the - callbacks. - - @param path: the path that the statuses resulted from checking - @type path: string - - @param statuses: the status dict for the path - @type statuses: dict - {path: {"text_status": "whatever" - "prop_status": "whatever"}, path2: ...} - - @return: (single status, summarised status) - @rtype: see StatusCache documentation - """ - return ({path: statuses[path]}, - rabbitvcs.util.vcs.summarize_status_pair(path, statuses)) - - -class StatusCache: - """ A StatusCache object maintains an internal cache of VCS status that have - been previously checked. There are also hooks (as yet unimplemented) to be - called by a separate status monitor when files are changed. - - The actual status checks are done by a separate object, which should have - a "check_status(self, path, recurse, summary)" method (see the specific - classes for details). - - If a summary is requested, the return type/callback parameter will always be - of the form: - - (non-recursive status dict, summarised recursive status dict) - - ...where both dicts are of the form: - - {path: {"text_status": text_status, - "prop_status": prop_status}} - - Otherwise, the return/callback value will be a single dict of the form: - - {path1: {"text_status": text_status1, - "prop_status": prop_status1}, - - path2: {"text_status": text_status2, - "prop_status": prop_status2}, - - ...} - - All thread synchronisation should be taken care of BY THIS CLASS. Callers - of public methods should not have to worry about synchronisation, except - that callbacks may originate from a different thread (since this class is - meant to be used in a separate process, that's probably not a big deal). - - Note about paths: here and there I've specified a "sane path". This class - does not do robust path checking and normalisation, so basically what is - meant is: this class expects absolute, normalised paths everywhere. This is - what Nautilus gives us, it is what PySVN gives us, so unless you're - hard-wiring something in, you should be fine. - - Note to developers: The major pitfall here is that the check_status needs to - access the cache, and will therefore block while the cache is locked. - Therefore, GREAT CARE must be taken to avoid locking the cache for longer - than necessary. - """ - - # FIXME: note to developers... the major bottleneck in this class is the - # fact that for each check of the cache, we loop over ALL of the keys to - # find the child paths. We need to come up with a proper data structure for - # this. - - #: The queue will be populated with 4-ples of - #: (path, recurse, invalidate, callback). - _paths_to_check = Queue() - - #: This tree stores the status of the items. We monitor working copy - #: for changes and modify this tree in-place accordingly. This way - #: apart from an intial recursive check we don't have to do any - #: and the speed is increased because the tree is in memory. - #: - #: This isn't a tree (yet) and looks like::: - #: - #: _status_tree = { - #: "/foo": {"age": 1, - #: "status": {"text_status": "normal", - #: "prop_status": "normal"}}, - #: "/foo/bar": {"age": 2, - #: "status": {"text_status": "normal", - #: "prop_status": "normal"}}, - #: "/foo/bar/baz": {"age": 2, - #: "status": {"text_status": "added", - #: "prop_status": "normal"}} - #: } - #: - #: As you can see it's not a tree (yet) and the way statuses are - #: collected as by iterating through the dictionary. - #: - #: The age parameter is used for limiting the size of the cache. Yes, it is - #: meant to be repeated. Yes, it is actually the opposite of age, in that - #: higher = newer. But of course, you read this comment before you tried to - #: do anything with it, didn't you. DIDN'T YOU? - #: - #: The "age" parameter should be based on when the path was requested, so - #: even if this triggers many recursive additions to the cache, all ages for - #: those paths should be the same. - #: - #: I was worried that, being a number, this could overflow. But the Python - #: library reference states that: "long integers have unlimited precision." - _status_tree = dict() - - #: Need a re-entrant lock here, look at check_status/add_path_to_check - _status_tree_lock = threading.RLock() - - def __init__(self): - """ Creates a new status cache. - - This will start the necessary worker thread and subprocess for checking. - """ - self.worker = threading.Thread(target = self._status_update_loop, - name = "Status cache thread") - - self.client = rabbitvcs.lib.vcs.create_vcs_instance() - - self._alive = threading.Event() - self._alive.set() - - # This means that the thread will die when everything else does. If - # there are problems, we will need to add a flag to manually kill it. - # self.checker = StatusCheckerStub() - self.checker = StatusChecker() - # self.worker.setDaemon(True) - self.worker.start() - - def path_modified(self, path): - """ Alerts the status checker that the given path was modified. - - NOT YET IMPLEMENTED - - The path (and all children? ancestors?) will be removed from the cache - (but not from pending actions, since they will be re-checked anyway). - """ - with self._status_tree_lock: - pass - # Need to clarify the logic for this. Stub for now. - - - - def check_status(self, path, - recurse=False, invalidate=False, - summary=False, callback=None): - """ - Checks the status of the given path and registers a callback. - - This can go two ways: - - 1. If we've already looked the path up, return the statuses associated - with it. This will block for as long as any other thread has our - status_tree locked. - - 2. If we haven't already got the path, return [(path, "calculating")]. - This will also block for max of (1) as long as the status_tree is - locked OR if the queue is blocking (should not be a significant - problem). In the meantime, the thread will pop the path from the - queue and look it up. - - @param path: the path to check the status of - @type path: string (a sane path) - - @param recurse: whether the check should be recursive - @type recurse: boolean - - @param invalidate: whether to invalidate the path we are checking (ie. - force an update of the cache) - @type invalidate: boolean - - @param summary: If True, a summarised status will be returned, and if a - callback is given then it will also pass back a summary. - See the class level documentation for details of the - summary. This is useful for easing inter-process - communication congestion. - @type summary: boolean - - @param callback: This function will be called when the status check is - complete - it will NOT be called if we already have the - statuses in the cache and we are not invalidating. The - callback will be called from a separate thread. - @type callback: a function with the API callback(path, statuses), - or None (or False) for no callback - """ - # log.debug("Status request for: %s" % path) - - statuses = {} - - found_in_cache = False - - if self.client.is_in_a_or_a_working_copy(path): - if not invalidate: - with self._status_tree_lock: - if path in self._status_tree: - # We're good, so return the status - found_in_cache = True - statuses = self._get_path_statuses(path, recurse) - - if invalidate or not found_in_cache: - # We need to calculate the status - statuses = status_calculating(path) - self._paths_to_check.put((path, recurse, invalidate, summary, - callback)) - - else: - statuses = status_unknown(path) - - # log.debug("%s: found in cache (%s)" % (path, found_in_cache)) - - if summary: - statuses = make_summary(path, statuses) - - return statuses - - def kill(self): - """ Stops operation of the cache. Future calls to check_status will just - get old information or a "calculating status", and callbacks will never - be called. - - This is here so that we can do necessary cleanup. There might be a GUI - interface to kill the enclosing service at some later date. - """ - self._alive.clear() - self._paths_to_check.put(None) - - def _status_update_loop(self): - """ This loops until the status cache is "killed" (via the kill() - method), checking for new paths and doing the status check accordingly. - """ - # This loop will stop when the thread is killed via the kill() method - while self._alive.isSet(): - next = self._paths_to_check.get() - - # This is a bit hackish, but basically when the kill method is - # called, if we're idle we'll never know. This is a way of - # interrupting the Queue. - if next: - (path, recurse, invalidate, summary, callback) = next - else: - continue - - self._update_path_status(path, recurse, invalidate, summary, - callback) - - log.debug("Exiting status cache update loop") - - def _get_path_statuses(self, path, recurse): - """ This will check the cache for a status for the given path. - - @param path: the path to check for - @type path: string (sane path) - - @param recurse: if True, the returned status dict will contain statuses - for all children of the given path - @type recurse: boolean - - @return: a status dict for the given path - @rtype: see class documentation - """ - statuses = None - - with self._status_tree_lock: - if self._status_tree.has_key(path): - statuses = {} - - if recurse: - child_keys = [another_path for another_path - in self._status_tree.keys() - if is_under_dir(path, another_path)] - - for another_path in child_keys: - statuses[another_path] = \ - self._status_tree[another_path]["status"] - else: - statuses[path] = self._status_tree[path]["status"] - - return statuses - - def _invalidate_path(self, path): - """ Invalidates the status information for the given path. This will - also invalidate the information for any children. - """ - with self._status_tree_lock: - child_keys = [another_path for another_path - in self._status_tree.keys() - if is_under_dir(path, another_path)] - for another_path in child_keys: - del self._status_tree[another_path] - - def _update_path_status(self, path, recurse=False, invalidate=False, - summary=False, callback=None): - """ Update the cached information for the given path, notifying the - callback upon completion. - - This function will check the cache first, just in case a previous call - has populated the path in question and we are not invalidating. - - The parameters are as per check_status, but instead of a return type - there is the callback. - """ - statuses = None - - # We can't trust the cache when we invalidate, because some items may - # have been renamed/deleted, and so we will end up with orphaned items - # in the status cache that cause inaccurate results for parent folders - found_in_cache = False - - if invalidate: - self._invalidate_path(path) - else: - # Another status check which includes this path may have completed - # in the meantime so let's do a sanity check. - found_in_cache = False - - with self._status_tree_lock: - if path in self._status_tree: - # log.debug("Sanity check proves useful! [%s]" % path) - # statuses = self._get_path_statuses(path, recurse) - statuses = self._get_path_statuses(path, recurse) - found_in_cache = True - - if not found_in_cache: - # Uncomment this for useful simulation of a looooong status check :) - # log.debug("Sleeping for 10s...") - # time.sleep(5) - # log.debug("Done.") - - # Otherwise actually do a status check - - check_results = None - check_summary = None - - if summary: - (check_results, check_summary) = \ - self.checker.check_status(path, recurse, summary) - else: - check_results = self.checker.check_status(path, recurse, - summary) - - - with self._status_tree_lock: - self._add_path_statuses(check_results) - statuses = self._get_path_statuses(path, recurse) - - # Remember: these callbacks will block THIS thread from calculating the - # next path on the "to do" list. - - # It is possible that: - # 1. Nautilus notices an item and requests a check for it - # 2. The item is deleted - # 3. The status check is done - # 4. We get back here - # In this situation, _get_path_statuses() will return None. - if statuses: - if summary: - statuses = ({path: statuses[path]}, check_summary) - - if callback: - callback(path, statuses) - - def _add_path_statuses(self, statuses): - """ Adds a list of VCS statuses to our cache. - - This will keep track of the "age" parameter, and always requests a clean - for every call (the clean may not actually do anything if the cache is - not too big). - - @param statuses: the VCS statuses to add to the cache - @type statuses: a list of tuples of the form: - [(path1, text_status1, prop_status1), (path2, ...), ...] - """ - with self._status_tree_lock: - age = self._get_max_age() + 1 - - for path, text_status, prop_status in statuses: - self._status_tree[path] = {"age": age, - "status": - {"text_status" : text_status, - "prop_status" : prop_status}} - - self._clean_status_cache() - - def _get_max_age(self): - """ Computes the minimum age of any of the cached statuses. - """ - with self._status_tree_lock: - ages = [data["age"] for - (path, data) in self._status_tree.items()] - if ages: - age = max(data["age"] for - (path, data) in self._status_tree.items()) - else: - age = 0 - - return age - - def _get_min_age(self): - """ Computes the minimum age of any of the cached statuses. - """ - with self._status_tree_lock: - ages = [data["age"] for - (path, data) in self._status_tree.items()] - if ages: - age = min(data["age"] for - (path, data) in self._status_tree.items()) - else: - age = 0 - - return age - - - def _clean_status_cache(self): - """ - Tries to ensure the status cache remains under a certain size. This will - not enforce a strict limit. The actual limit of the cache is: - max( largest WC status tree checked in one go , MAX_CACHE_SIZE ) - """ - with self._status_tree_lock: - # We only care if the cache is bigger than the max size BUT we don't - # want to delete the entire cache every time. - # log.debug("Status cache size: %i" % len(self._status_tree)) - - max_age = self._get_max_age() - min_age = min([data["age"] for - (path, data) in self._status_tree.items()]) - - while (len(self._status_tree) > MAX_CACHE_SIZE and - min_age != max_age): - - paths = (path for - path in self._status_tree.keys() if - self._status_tree[path]["age"] == min_age) - - for path in paths: - del self._status_tree[path] - - min_age = min([data["age"] for - (path, data) in self._status_tree.items()]) - - log.debug("Removed %i paths from status cache" % len(paths)) diff -Nru rabbitvcs-0.13.1/rabbitvcs/services/statuscheckerplus.py rabbitvcs-0.15.0.5/rabbitvcs/services/statuscheckerplus.py --- rabbitvcs-0.13.1/rabbitvcs/services/statuscheckerplus.py 2010-03-22 16:11:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/services/statuscheckerplus.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,197 +0,0 @@ -# -# Copyright (C) 2009 Jason Heeris -# Copyright (C) 2009 by Bruce van der Kooij -# Copyright (C) 2009 by Adam Plumb # -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -import threading -from Queue import Queue - -# ATTENTION: Developers and hackers! -# The following lines allow you to select between different status checker -# implementations. Simply uncomment one to try it out - there's nothing else you -# have to do. - -# from rabbitvcs.services.checkerservice import StatusCheckerStub as StatusChecker -# from rabbitvcs.services.simplechecker import StatusChecker -# from rabbitvcs.services.statuschecker import StatusChecker -from rabbitvcs.services.checkers.loopedchecker import StatusChecker - -import rabbitvcs.util.vcs -import rabbitvcs.lib.vcs.svn - -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.services.statuscheckerplus") - -def status_calculating(path): - """ Creates a "calculating" status for the given path. """ - return {path: {"text_status": "calculating", - "prop_status": "calculating"}} - -def status_unknown(path): - """ Creates an "unknown" status for the given path. """ - return {path: {"text_status": "unknown", - "prop_status": "unknown"}} - -def make_summary(path, statuses): - """ Simple convenience method to make the path summaries we pass back to the - callbacks. - - @param path: the path that the statuses resulted from checking - @type path: string - - @param statuses: the status dict for the path - @type statuses: dict - {path: {"text_status": "whatever" - "prop_status": "whatever"}, path2: ...} - - @return: (single status, summarised status) - @rtype: see StatusChecker documentation - """ - return ({path: statuses[path]}, - rabbitvcs.util.vcs.summarize_status_pair(path, statuses)) - - -class StatusCheckerPlus: - - #: The queue will be populated with 4-ples of - #: (path, recurse, invalidate, callback). - _paths_to_check = Queue() - - def __init__(self): - """ Creates a new status cache. - - This will start the necessary worker thread and subprocess for checking. - """ - self.worker = threading.Thread(target = self._status_update_loop, - name = "Status cache thread") - - self.client = rabbitvcs.lib.vcs.create_vcs_instance() - - self._alive = threading.Event() - self._alive.set() - - # We need a checker for each thread (if we use locks, we're right back - # where we started from). - self.checker = StatusChecker() - self.other_checker = StatusChecker() - # self.worker.setDaemon(True) - self.worker.start() - - def check_status(self, path, - recurse=False, invalidate=False, - summary=False, callback=None): - # The invalidate parameter is not used. - statuses = None - - if callback: - statuses = \ - self._check_status_with_callback(path, recurse, summary, callback) - else: - statuses = \ - self._check_status_without_callback(path, self.checker, recurse, - summary) - - return statuses - - def _check_status_with_callback(self, path, recurse=False, - summary=False, callback=None): - - if self.client.is_in_a_or_a_working_copy(path): - statuses = status_calculating(path) - self._paths_to_check.put((path, recurse, summary, callback)) - else: - statuses = status_unknown(path) - - if summary: - statuses = make_summary(path, statuses) - - return statuses - - def _check_status_without_callback(self, path, checker, recurse=False, - summary=False): - - # This might be considered a little hacky, but we need to use a - # different checker for each thread. - statuses = {} - - # Uncomment this for useful simulation of a looooong status check :) - # log.debug("Sleeping for 10s...") - # time.sleep(5) - # log.debug("Done.") - - check_results = None - check_summary = None - - if summary: - (check_results, check_summary) = \ - checker.check_status(path, recurse, summary) - else: - check_results = checker.check_status(path, recurse, summary) - - for result_path, text_status, prop_status in check_results: - statuses[result_path] = {"text_status" : text_status, - "prop_status" : prop_status} - - # It is possible that: - # 1. Nautilus notices an item and requests a check for it - # 2. The item is deleted - # 3. The status check is done - # 4. We get back here - # In this situation, "statuses" will be empty. - if statuses and summary: - statuses = ({path: statuses[path]}, check_summary) - - return statuses - - def kill(self): - """ Stops operation of the cache. Future calls to check_status will just - get old information or a "calculating status", and callbacks will never - be called. - - This is here so that we can do necessary cleanup. There might be a GUI - interface to kill the enclosing service at some later date. - """ - self._alive.clear() - self._paths_to_check.put(None) - - def _status_update_loop(self): - """ This loops until the status cache is "killed" (via the kill() - method), checking for new paths and doing the status check accordingly. - """ - # This loop will stop when the thread is killed via the kill() method - while self._alive.isSet(): - next = self._paths_to_check.get() - - # This is a bit hackish, but basically when the kill method is - # called, if we're idle we'll never know. This is a way of - # interrupting the Queue. - if next: - (path, recurse, summary, callback) = next - else: - continue - - self._update_path_status(path, recurse, summary, callback) - - log.debug("Exiting status cache update loop") - - def _update_path_status(self, path, recurse=False, - summary=False, callback=None): - - statuses = self._check_status_without_callback(path, self.other_checker, - recurse, summary) - - if statuses and callback: - callback(path, statuses) diff -Nru rabbitvcs-0.13.1/rabbitvcs/services/statuschecker.py rabbitvcs-0.15.0.5/rabbitvcs/services/statuschecker.py --- rabbitvcs-0.13.1/rabbitvcs/services/statuschecker.py 2010-03-22 16:11:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/services/statuschecker.py 2010-12-09 19:52:55.000000000 +0000 @@ -20,58 +20,50 @@ to work, or you need to prototype things. """ -import rabbitvcs.lib.vcs +import rabbitvcs.vcs +import rabbitvcs.vcs.status -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.services.statuschecker") +import simplejson + +from rabbitvcs import gettext +_ = gettext.gettext -def status_error(path): - """ - Create a pysvn-like status object that indicates an error. - """ - status = (path, "error", "error") - return status +from rabbitvcs.util.log import Log +log = Log("rabbitvcs.services.statuschecker") class StatusChecker: """ A class for performing status checks. """ + # All subclasses should override this! This is to be displayed in the + # settings dialog + CHECKER_NAME = _("Simple status checker") + def __init__(self): """ Initialises status checker. Obviously. """ - self.vcs_client = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs_client = rabbitvcs.vcs.create_vcs_instance() + self.conditions_dict_cache = {} - def check_status(self, path, recurse, summary): + def check_status(self, path, recurse, summary, invalidate): """ Performs a status check, blocking until the check is done. - - The returned status data can have two forms. If a summary is requested, - it is: - - (status list, summarised dict) - - ...where the list is of the form - - [(path1, text_status1, prop_status1), (path2, ...), ...] - - ...and the dict is: - - {path: {"text_status": text_status, - "prop_status": prop_status}} - - If no summary is requested, the return value is just the status list. """ + path_status = self.vcs_client.status(path, summary, invalidate) + return path_status + + def generate_menu_conditions(self, paths, invalidate=False): + from rabbitvcs.util.contextmenu import MainContextMenuConditions - try: - status_list = self.vcs_client.status(path, recurse=recurse) - statuses = [(status.path, - str(status.text_status), - str(status.prop_status)) - for status in status_list] - except Exception: - statuses = [status_error(path)] - - if summary: - statuses = (statuses, - rabbitvcs.util.vcs.summarize_status_pair_list(path, - statuses)) - - return statuses + conditions = MainContextMenuConditions(self.vcs_client, paths) + return conditions.path_dict + + def extra_info(self): + return None + + def get_memory_usage(self): + """ Returns any additional memory of any subprocesses used by this + checker. In other words, DO NOT return the memory usage of THIS process! + """ + return 0 + def quit(self): + # We will exit when the main process does + pass diff -Nru rabbitvcs-0.13.1/rabbitvcs/test.py rabbitvcs-0.15.0.5/rabbitvcs/test.py --- rabbitvcs-0.13.1/rabbitvcs/test.py 2009-09-28 11:01:11.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/test.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -Nru rabbitvcs-0.13.1/rabbitvcs/tests/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/tests/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/tests/__init__.py 2009-09-28 11:01:11.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/tests/__init__.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -Nru rabbitvcs-0.13.1/rabbitvcs/tests/test_rabbitvcs.py rabbitvcs-0.15.0.5/rabbitvcs/tests/test_rabbitvcs.py --- rabbitvcs-0.13.1/rabbitvcs/tests/test_rabbitvcs.py 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/tests/test_rabbitvcs.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -37,7 +37,7 @@ import nautilus import pysvn import rabbitvcs -from rabbitvcs.lib.extensions.nautilus import RabbitVCS +from rabbitvcs.util.extensions.nautilus import RabbitVCS class RabbitVCSTest(TestCase): diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/about.py rabbitvcs-0.15.0.5/rabbitvcs/ui/about.py --- rabbitvcs-0.13.1/rabbitvcs/ui/about.py 2010-04-02 15:12:27.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/about.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -46,16 +46,16 @@ def __init__(self): def url_hook(dialog, url): - rabbitvcs.lib.helper.launch_url_in_webbrowser(url) + rabbitvcs.util.helper.launch_url_in_webbrowser(url) gtk.about_dialog_set_url_hook(url_hook) self.about = gtk.AboutDialog() + self.about.set_name(rabbitvcs.APP_NAME) # The set_program_name method was not added until PyGTK 2.12 if hasattr(self.about, "set_program_name"): self.about.set_program_name(rabbitvcs.APP_NAME) - self.about.set_name(rabbitvcs.APP_NAME) self.about.set_version(rabbitvcs.version) self.about.set_website("http://www.rabbitvcs.org") self.about.set_website_label("http://www.rabbitvcs.org") diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/action.py rabbitvcs-0.15.0.5/rabbitvcs/ui/action.py --- rabbitvcs-0.13.1/rabbitvcs/ui/action.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/action.py 2011-10-18 19:04:36.000000000 +0000 @@ -1,21 +1,21 @@ # -# This is an extension to the Nautilus file manager to allow better +# This is an extension to the Nautilus file manager to allow better # integration with the Subversion source control system. -# +# # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# +# Copyright (C) 2008-2010 by Adam Plumb +# # RabbitVCS 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 2 of the License, or # (at your option) any later version. -# +# # RabbitVCS 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 RabbitVCS; If not, see . # @@ -23,6 +23,9 @@ from __future__ import division import threading +from os.path import basename + +import shutil import pygtk import gobject import gtk @@ -30,11 +33,11 @@ from rabbitvcs.ui import InterfaceView import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib -import rabbitvcs.lib.vcs -import rabbitvcs.lib.helper +import rabbitvcs.util +import rabbitvcs.vcs +import rabbitvcs.util.helper from rabbitvcs.ui.dialog import MessageBox -from rabbitvcs.lib.decorators import gtk_unsafe +from rabbitvcs.util.decorators import gtk_unsafe from rabbitvcs import gettext _ = gettext.gettext @@ -44,10 +47,10 @@ class VCSNotifier(InterfaceView): """ Provides a base class to handle threaded/gtk_unsafe calls to our vcs - + """ - - def __init__(self, callback_cancel=None, visible=True): + + def __init__(self, callback_cancel=None, visible=True): InterfaceView.__init__(self) if visible: @@ -65,83 +68,127 @@ def toggle_ok_button(self, sensitive): pass - + def append(self, entry): pass def focus_on_ok_button(self): pass +class DummyNotifier: + def __init__(self): + pass + + def close(self): + pass + + def set_canceled_by_user(self, was_canceled_by_user): + pass + + @gtk_unsafe + def exception_callback(self, e): + MessageBox(str(e)) + class MessageCallbackNotifier(VCSNotifier): """ Provides an interface to handle the Notification UI. - + """ - - glade_filename = "notification" - glade_id = "Notification" - - def __init__(self, callback_cancel=None, visible=True): + + gtkbuilder_filename = "notification" + gtkbuilder_id = "Notification" + + def __init__(self, callback_cancel=None, visible=True, client_in_same_thread=True): """ @type callback_cancel: def @param callback_cancel: A method to call when cancel button is clicked. - + @type visible: boolean @param visible: Show the notification window. Defaults to True. - + """ - + VCSNotifier.__init__(self, callback_cancel, visible) - + + self.client_in_same_thread = client_in_same_thread + self.table = rabbitvcs.ui.widget.Table( self.get_widget("table"), - [gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], + [gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], [_("Action"), _("Path"), _("Mime Type")] ) - + self.pbar = rabbitvcs.ui.widget.ProgressBar( self.get_widget("pbar") ) self.pbar.start_pulsate() self.finished = False + def on_destroy(self, widget): + if self.callback_cancel is not None: + self.callback_cancel() + + self.canceled = True + self.close() + def on_cancel_clicked(self, widget): if self.canceled or self.finished: - self.close(); + self.close() if self.callback_cancel is not None: self.callback_cancel() self.canceled = True - + def on_ok_clicked(self, widget): self.close() - @gtk_unsafe def toggle_ok_button(self, sensitive): + if not self.client_in_same_thread: + gtk.gdk.threads_enter() + self.finished = True self.get_widget("ok").set_sensitive(sensitive) - - @gtk_unsafe + self.get_widget("saveas").set_sensitive(sensitive) + + if not self.client_in_same_thread: + gtk.gdk.threads_leave() + def append(self, entry): + if not self.client_in_same_thread: + gtk.gdk.threads_enter() + self.table.append(entry) self.table.scroll_to_bottom() - + + if not self.client_in_same_thread: + gtk.gdk.threads_leave() + def get_title(self): return self.get_widget("Notification").get_title() - - @gtk_unsafe + def set_title(self, title): + if not self.client_in_same_thread: + gtk.gdk.threads_enter() + self.get_widget("Notification").set_title(title) - + + if not self.client_in_same_thread: + gtk.gdk.threads_leave() + def set_header(self, header): self.set_title(header) - gtk.gdk.threads_enter() + + if not self.client_in_same_thread: + gtk.gdk.threads_enter() + self.get_widget("action").set_markup( "%s" % header ) - gtk.gdk.threads_leave() + + if not self.client_in_same_thread: + gtk.gdk.threads_leave() def focus_on_ok_button(self): self.get_widget("ok").grab_focus() @@ -149,34 +196,58 @@ def exception_callback(self, e): self.append(["", str(e), ""]) + def on_saveas_clicked(self, widget): + self.saveas() + + @gtk_unsafe + def enable_saveas(self): + self.get_widget("saveas").set_sensitive(True) + + def disable_saveas(self): + self.get_widget("saveas").set_sensitive(False) + + def saveas(self, path=None): + if path is None: + from rabbitvcs.ui.dialog import FileSaveAs + dialog = FileSaveAs() + path = dialog.run() + + if path is not None: + fh = open(path, "w") + fh.write(self.table.generate_string_from_data()) + fh.close() + class LoadingNotifier(VCSNotifier): - - glade_filename = "dialogs" - glade_id = "Loading" - + + gtkbuilder_filename = "dialogs/loading" + gtkbuilder_id = "Loading" + def __init__(self, callback_cancel=None, visible=True): - + VCSNotifier.__init__(self, callback_cancel, visible) - + self.pbar = rabbitvcs.ui.widget.ProgressBar( self.get_widget("pbar") ) self.pbar.start_pulsate() + def on_destroy(self, widget): + self.close() + def on_loading_cancel_clicked(self, widget): self.set_canceled_by_user(True) if self.callback_cancel is not None: self.callback_cancel() - self.close(); + self.close() def get_title(self): return self.get_widget("Loading").get_title() - + @gtk_unsafe def set_title(self, title): self.get_widget("Loading").set_title(title) - + def set_header(self, header): self.set_title(header) @@ -189,48 +260,42 @@ """ Provides a central interface to handle vcs actions & callbacks. Loads UI elements that require user interaction. - + """ - + def __init__(self, client, register_gtk_quit=False, notification=True, run_in_thread=True): - + if run_in_thread is True: threading.Thread.__init__(self) - + self.message = None - - self.client = client - self.client.set_callback_cancel(self.cancel) - self.client.set_callback_notify(self.notify) - self.client.set_callback_get_log_message(self.get_log_message) - self.client.set_callback_get_login(self.get_login) - self.client.set_callback_ssl_server_trust_prompt(self.get_ssl_trust) - self.client.set_callback_ssl_client_cert_password_prompt(self.get_ssl_password) - self.client.set_callback_ssl_client_cert_prompt(self.get_client_cert) - - self.queue = rabbitvcs.lib.FunctionQueue() - + + self.queue = rabbitvcs.util.FunctionQueue() + self.login_tries = 0 self.cancel = False - + self.has_loader = False self.has_notifier = False - if notification is True: + if notification: self.notification = MessageCallbackNotifier( self.set_cancel, - notification + notification, + client_in_same_thread=self.client_in_same_thread ) self.has_notifier = True - else: + elif run_in_thread: visible = run_in_thread self.notification = LoadingNotifier(self.set_cancel, visible=visible) self.has_loader = True - + else: + self.notification = DummyNotifier() + self.pbar_ticks = None self.pbar_ticks_current = -1 - + # Tells the notification window to do a gtk.main_quit() when closing # Is used when the script is run from a command line if register_gtk_quit: @@ -241,24 +306,24 @@ Set the total number of ticks to represent in the progress bar. Each time the notify method is called, update the pbar fraction. If this function isn't called, the progress bar just pulsates. - + @type num: integer @param num: The number of ticks in the progress bar. """ - + self.pbar_ticks = num - + def set_header(self, header): self.notification.set_header(header) - + def cancel(self): """ PySVN calls this callback method frequently to see if the user wants to cancel the action. If self.cancel is True, then it will cancel the action. If self.cancel is False, it will continue. - + """ - + return self.cancel def set_cancel(self, cancel=True): @@ -266,65 +331,23 @@ Used as a callback function by the Notification UI. When the cancel button is clicked, it sets self.cancel to True, and the cancel callback method returns True. - + """ - self.cancel = cancel self.notification.set_canceled_by_user(True) self.queue.cancel_queue() - - def notify(self, data): - """ - This method is called every time the VCS function wants to tell us - something. It passes us a dictionary of useful information. When - this method is called, it appends some useful data to the notifcation - window. - - TODO: We need to implement this in a more VCS-agnostic way, since the - supplied data dictionary is pysvn-dependent. I'm going to implement - something in lib/vcs/svn.py soon. - - """ - - if self.has_notifier: - if self.pbar_ticks is not None: - self.pbar_ticks_current += 1 - frac = self.pbar_ticks_current / self.pbar_ticks - if frac > 1: - frac = 1 - self.notification.pbar.update(frac) - - if self.client.NOTIFY_ACTIONS.has_key(data["action"]): - action = self.client.NOTIFY_ACTIONS[data["action"]] - else: - action = data["action"] - - #FIXME: this is crap - if data["revision"].number != -1 and rabbitvcs.lib.helper.in_rich_compare( - data["action"], - self.client.NOTIFY_ACTIONS_COMPLETE): - self.notification.append( - ["", "Revision %s" % data["revision"].number, ""] - ) - else: - self.notification.append([ - action, - data["path"], - data["mime_type"] - ]) - def finish(self, message=None): """ This is called when the final notifcation message has been received, or it is called manually when no final notification message is expected. - + It sets the current "status", and enables the OK button to allow the user to leave the window. - + @type message: string @param message: A message to show the user. - + """ if self.has_notifier: @@ -338,20 +361,20 @@ self.notification.pbar.stop_pulsate() self.notification.pbar.update(1) self.notification.toggle_ok_button(True) - + def get_log_message(self): """ A callback method that retrieves a supplied log message. - + Returns a list where the first element is True/False. Returning true tells the action to continue, false tells it to cancel. The second element is the log message, which is specified by self.message. self.message is set by calling the self.set_log_message() method from the UI interface class. - + @rtype: (boolean, string) @return: (True=continue/False=cancel, log message) - + """ if self.message is None: @@ -359,41 +382,41 @@ dialog = rabbitvcs.ui.dialog.TextChange(_("Log Message")) result = dialog.run() gtk.gdk.threads_leave() - + should_continue = (result[0] == gtk.RESPONSE_OK) return should_continue, result[1].encode("utf-8") else: return True, self.message.encode("utf-8") - + def get_login(self, realm, username, may_save): """ - A callback method that requests a username/password to login to a + A callback method that requests a username/password to login to a password-protected repository. This method runs the Authentication dialog, which provides a username, password, and saving widget. The dialog returns a tuple, which is returned directly to the VCS caller. - + If the login fails greater than three times, cancel the action. - + The dialog must be called from within a threaded block, otherwise it will not be responsive. - + @type realm: string @param realm: The realm of the repository. - + @type username: string @param username: Username passed by the vcs caller. - + @type may_save: boolean @param may_save: Whether or not the authentication can be saved. - + @rtype: (boolean, string, string, boolean) @return: (True=continue/False=cancel, username,password, may_save) - + """ - + if self.login_tries >= 3: return (False, "", "", False) - + gtk.gdk.threads_enter() dialog = rabbitvcs.ui.dialog.Authentication( realm, @@ -401,12 +424,12 @@ ) result = dialog.run() gtk.gdk.threads_leave() - + if result is not None: self.login_tries += 1 - + return result - + def get_ssl_trust(self, data): """ A callback method that requires the user to either accept or deny @@ -419,10 +442,10 @@ @type data: dictionary @param data: A dictionary with SSL certificate info. - + @rtype: (boolean, int, boolean) @return: (True=Accept/False=Deny, number of accepted failures, remember) - + """ gtk.gdk.threads_enter() @@ -454,21 +477,21 @@ def get_ssl_password(self, realm, may_save): """ A callback method that is used to get an ssl certificate passphrase. - + The dialog must be called from within a threaded block, otherwise it - will not be responsive. + will not be responsive. @type realm: string @param realm: The certificate realm. - + @type may_save: boolean @param may_save: Whether or not the passphrase can be saved. - + @rtype: (boolean, string, boolean) @return: (True=continue/False=cancel, password, may save) - + """ - + gtk.gdk.threads_enter() dialog = rabbitvcs.ui.dialog.CertAuthentication( realm, @@ -478,25 +501,25 @@ gtk.gdk.threads_leave() return result - + def get_client_cert(self, realm, may_save): """ A callback method that is used to get an ssl certificate. - + The dialog must be called from within a threaded block, otherwise it - will not be responsive. + will not be responsive. @type realm: string @param realm: The certificate realm. - + @type may_save: boolean @param may_save: Whether or not the passphrase can be saved. - + @rtype: (boolean, string, boolean) @return: (True=continue/False=cancel, password, may save) - + """ - + gtk.gdk.threads_enter() dialog = rabbitvcs.ui.dialog.SSLClientCertPrompt( realm, @@ -506,95 +529,226 @@ gtk.gdk.threads_leave() return result - + def set_log_message(self, message): """ Set this action's log message from the UI interface. self.message is referred to when the VCS does the get_log_message callback. - + @type message: string @param message: Set a log message. - + """ - + self.message = message - + @gtk_unsafe def set_status(self, message): """ Set the current status of the VCS action. Currently, this method is called at the beginning and end of each action, to display what is - going on. Currently, it just appends the status message to the + going on. Currently, it just appends the status message to the notification window. In the future, I may set up a progress bar and put the status message there. - + @type message: string @param message: A status message. - + """ - + if message is not None: self.notification.get_widget("status").set_text(message) - + def append(self, func, *args, **kwargs): """ Append a function call to the action queue. - + """ - + self.queue.append(func, *args, **kwargs) - + def get_result(self, index): """ Retrieve the result of a single function call by specifying the order in which the function was in the queue. - + @type index: int @param index: The queue index - + """ - + return self.queue.get_result(index) - + def __queue_exception_callback(self, e): """ Used internally when an exception is raised within the queue - + @type e: Exception @param e: The exception object passed by the FunctionQueue - + """ self.notification.exception_callback(e) - + if self.has_notifier: self.finish() if self.has_loader: self.stop() - + def stop(self): - self.notification.close() - + if self.notification: + self.notification.close() + def run(self): """ - The central method that drives this class. It runs the before and + The central method that drives this class. It runs the before and after methods, as well as the main vcs method. - + """ - + if self.has_loader: - self.queue.append(self.notification.close) - + self.queue.append(self.notification.close, threaded=True) + self.queue.set_exception_callback(self.__queue_exception_callback) self.queue.start() - + def run_single(self, func, *args, **kwargs): try: - ret = func(*args, **kwargs) + returner = func(*args, **kwargs) except Exception, e: self.__queue_exception_callback(e) - ret = None + returner = None + finally: + self.stop() + + return returner - return ret - def stop_loader(self): self.stop() + +class SVNAction(VCSAction): + def __init__(self, client, register_gtk_quit=False, notification=True, + run_in_thread=True): + + self.client_in_same_thread = False + + self.client = client + self.client.set_callback_cancel(self.cancel) + self.client.set_callback_notify(self.notify) + self.client.set_callback_get_log_message(self.get_log_message) + self.client.set_callback_get_login(self.get_login) + self.client.set_callback_ssl_server_trust_prompt(self.get_ssl_trust) + self.client.set_callback_ssl_client_cert_password_prompt(self.get_ssl_password) + self.client.set_callback_ssl_client_cert_prompt(self.get_client_cert) + + VCSAction.__init__(self, client, register_gtk_quit, notification, + run_in_thread) + + + def notify(self, data): + """ + This method is called every time the VCS function wants to tell us + something. It passes us a dictionary of useful information. When + this method is called, it appends some useful data to the notifcation + window. + + TODO: We need to implement this in a more VCS-agnostic way, since the + supplied data dictionary is pysvn-dependent. I'm going to implement + something in lib/vcs/svn.py soon. + + """ + + if self.has_notifier: + self.conflict_filter(data) + + if self.pbar_ticks is not None: + self.pbar_ticks_current += 1 + frac = self.pbar_ticks_current / self.pbar_ticks + if frac > 1: + frac = 1 + self.notification.pbar.update(frac) + + is_known_action = False + if self.client.NOTIFY_ACTIONS.has_key(data["action"]): + action = self.client.NOTIFY_ACTIONS[data["action"]] + is_known_action = True + else: + action = data["action"] + + # Determine if this action denotes completedness + is_complete_action = False + for item in self.client.NOTIFY_ACTIONS_COMPLETE: + if str(data["action"]) == str(item): + is_complete_action = True + break + + if (is_known_action + and is_complete_action + and "revision" in data + and data["revision"]): + self.notification.append( + ["", "Revision %s" % data["revision"].number, ""] + ) + elif "path" in data: + self.notification.append([ + action, + data["path"], + data["mime_type"] + ]) + + def conflict_filter(self, data): + if "content_state" in data and str(data["content_state"]) == "conflicted": + position = self.queue.get_position() + self.queue.insert(position+1, self.edit_conflict, data) + + def edit_conflict(self, data): + rabbitvcs.util.helper.launch_ui_window("editconflicts", [data["path"]], block=True) + +class GitAction(VCSAction): + def __init__(self, client, register_gtk_quit=False, notification=True, + run_in_thread=True): + + self.client_in_same_thread = True + + self.client = client + self.client.set_callback_notify(self.notify) + self.client.set_callback_get_user(self.get_user) + self.client.set_callback_get_cancel(self.cancel) + + VCSAction.__init__(self, client, register_gtk_quit, notification, + run_in_thread) + + def notify(self, data): + if self.has_notifier: + if data: + self.conflict_filter(data) + if isinstance(data, dict): + self.notification.append([ + data["action"], + data["path"], + data["mime_type"] + ]) + else: + self.notification.append(["", data, ""]) + + def get_user(self): + gtk.gdk.threads_enter() + dialog = rabbitvcs.ui.dialog.NameEmailPrompt() + result = dialog.run() + gtk.gdk.threads_leave() + + return result + + def conflict_filter(self, data): + if str(data).startswith("ERROR:"): + path = data[27:] + rabbitvcs.util.helper.launch_ui_window("editconflicts", [path], block=True) + +def vcs_action_factory(client, register_gtk_quit=False, notification=True, + run_in_thread=True): + + if client.vcs == rabbitvcs.vcs.VCS_GIT: + return GitAction(client, register_gtk_quit, notification, + run_in_thread) + else: + return SVNAction(client, register_gtk_quit, notification, + run_in_thread) diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/add.py rabbitvcs-0.15.0.5/rabbitvcs/ui/add.py --- rabbitvcs-0.13.1/rabbitvcs/ui/add.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/add.py 2010-12-25 02:33:00.000000000 +0000 @@ -1,21 +1,21 @@ # -# This is an extension to the Nautilus file manager to allow better +# This is an extension to the Nautilus file manager to allow better # integration with the Subversion source control system. -# +# # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# +# Copyright (C) 2008-2010 by Adam Plumb +# # RabbitVCS 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 2 of the License, or # (at your option) any later version. -# +# # RabbitVCS 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 RabbitVCS; If not, see . # @@ -29,13 +29,13 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.lib.contextmenu import GtkFilesContextMenu, GtkContextMenuCaller +from rabbitvcs.util.contextmenu import GtkFilesContextMenu, GtkContextMenuCaller import rabbitvcs.ui.widget import rabbitvcs.ui.dialog import rabbitvcs.ui.action -import rabbitvcs.lib.helper -import rabbitvcs.lib.vcs -from rabbitvcs.lib.log import Log +import rabbitvcs.util.helper +import rabbitvcs.vcs +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.add") @@ -48,25 +48,26 @@ """ Provides an interface for the user to add unversioned files to a repository. Also, provides a context menu with some extra functionality. - + Send a list of paths to be added - + """ TOGGLE_ALL = True def __init__(self, paths, base_dir=None): InterfaceView.__init__(self, "add", "Add") - + self.paths = paths self.base_dir = base_dir self.last_row_clicked = None - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() self.items = [] - self.statuses = [self.vcs.STATUS["unversioned"], self.vcs.STATUS["obstructed"]] + self.statuses = self.svn.STATUSES_FOR_ADD self.files_table = rabbitvcs.ui.widget.Table( - self.get_widget("files_table"), - [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, + self.get_widget("files_table"), + [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, gobject.TYPE_STRING], [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension")], filters=[{ @@ -101,22 +102,20 @@ self.files_table.clear() for item in self.items: self.files_table.append([ - True, - item.path, - rabbitvcs.lib.helper.get_file_extension(item.path) + True, + item.path, + rabbitvcs.util.helper.get_file_extension(item.path) ]) - def reload_treeview(self): + # Overrides the GtkContextMenuCaller method + def on_context_menu_command_finished(self): self.initialize_items() - def reload_treeview_threaded(self): - self.load() - def initialize_items(self): """ Initializes the activated cache and loads the file items in a new thread """ - + try: thread.start_new_thread(self.load, ()) except Exception, e: @@ -125,18 +124,16 @@ def delete_items(self, widget, data=None): paths = self.files_table.get_selected_row_items(1) if len(paths) > 0: - from rabbitvcs.ui.delete import Delete - Delete(paths).start() - sleep(1) # sleep so the items can be fully deleted before init - self.initialize_items() - + proc = rabbitvcs.util.helper.launch_ui_window("delete", paths) + self.rescan_after_process_exit(proc, paths) + # # UI Signal Callbacks # - + def on_destroy(self, widget): self.destroy() - + def on_cancel_clicked(self, widget): self.close() @@ -148,13 +145,13 @@ self.hide() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Add")) self.action.append(self.action.set_status, _("Running Add Command...")) - self.action.append(self.vcs.add, items) + self.action.append(self.svn.add, items) self.action.append(self.action.set_status, _("Completed Add")) self.action.append(self.action.finish) self.action.start() @@ -166,7 +163,7 @@ def on_files_table_row_activated(self, treeview, event, col): paths = self.files_table.get_selected_row_items(1) - rabbitvcs.lib.helper.launch_diff_tool(*paths) + rabbitvcs.util.helper.launch_diff_tool(*paths) def on_files_table_key_event(self, treeview, data=None): if gtk.gdk.keyval_name(data.keyval) == "Delete": @@ -182,13 +179,14 @@ class AddQuiet: def __init__(self, paths): - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, run_in_thread=False ) - - self.action.append(self.vcs.add, paths) + + self.action.append(self.svn.add, paths) self.action.run() if __name__ == "__main__": diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/annotate.py rabbitvcs-0.15.0.5/rabbitvcs/ui/annotate.py --- rabbitvcs-0.13.1/rabbitvcs/ui/annotate.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/annotate.py 2010-12-29 14:58:28.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -30,18 +30,18 @@ import time from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.log import LogDialog -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.log import log_dialog_factory +from rabbitvcs.ui.action import SVNAction, GitAction import rabbitvcs.ui.widget from rabbitvcs.ui.dialog import MessageBox -import rabbitvcs.lib.helper -import rabbitvcs.lib.vcs -from rabbitvcs.lib.decorators import gtk_unsafe +import rabbitvcs.util.helper +import rabbitvcs.vcs +from rabbitvcs.util.decorators import gtk_unsafe from rabbitvcs import gettext _ = gettext.gettext -DATETIME_FORMAT = rabbitvcs.lib.helper.LOCAL_DATETIME_FORMAT +DATETIME_FORMAT = rabbitvcs.util.helper.LOCAL_DATETIME_FORMAT class Annotate(InterfaceView): """ @@ -61,26 +61,7 @@ InterfaceView.__init__(self, "annotate", "Annotate") self.get_widget("Annotate").set_title(_("Annotate - %s") % path) - - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - - if revision is None: - revision = "HEAD" - - self.path = path - self.get_widget("from").set_text(str(1)) - self.get_widget("to").set_text(str(revision)) - - self.table = rabbitvcs.ui.widget.Table( - self.get_widget("table"), - [gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, - gobject.TYPE_STRING, gobject.TYPE_STRING], - [_("Line"), _("Revision"), _("Author"), - _("Date"), _("Text")] - ) - self.table.allow_multiple() - - self.load() + self.vcs = rabbitvcs.vcs.VCS() def on_destroy(self, widget): self.destroy() @@ -95,19 +76,60 @@ self.load() def on_from_show_log_clicked(self, widget, data=None): - LogDialog(self.path, ok_callback=self.on_from_log_closed) + log_dialog_factory(self.path, ok_callback=self.on_from_log_closed) def on_from_log_closed(self, data): if data is not None: self.get_widget("from").set_text(data) def on_to_show_log_clicked(self, widget, data=None): - LogDialog(self.path, ok_callback=self.on_to_log_closed) + log_dialog_factory(self.path, ok_callback=self.on_to_log_closed) def on_to_log_closed(self, data): if data is not None: self.get_widget("to").set_text(data) + + @gtk_unsafe + def enable_saveas(self): + self.get_widget("save").set_sensitive(True) + + def disable_saveas(self): + self.get_widget("save").set_sensitive(False) + + def save(self, path=None): + if path is None: + from rabbitvcs.ui.dialog import FileSaveAs + dialog = FileSaveAs() + path = dialog.run() + + if path is not None: + fh = open(path, "w") + fh.write(self.generate_string_from_result()) + fh.close() +class SVNAnnotate(Annotate): + def __init__(self, path, revision=None): + Annotate.__init__(self, path, revision) + + self.svn = self.vcs.svn() + + if revision is None: + revision = "HEAD" + + self.path = path + self.get_widget("from").set_text(str(1)) + self.get_widget("to").set_text(str(revision)) + + self.table = rabbitvcs.ui.widget.Table( + self.get_widget("table"), + [gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, + gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Line"), _("Revision"), _("Author"), + _("Date"), _("Text")] + ) + self.table.allow_multiple() + + self.load() # # Helper methods @@ -121,19 +143,19 @@ MessageBox(_("The from revision field must be an integer")) return - from_rev = self.vcs.revision("number", number=int(from_rev_num)) + from_rev = self.svn.revision("number", number=int(from_rev_num)) - to_rev = self.vcs.revision("head") + to_rev = self.svn.revision("head") if to_rev_num.isdigit(): - to_rev = self.vcs.revision("number", number=int(to_rev_num)) + to_rev = self.svn.revision("number", number=int(to_rev_num)) - self.action = VCSAction( - self.vcs, + self.action = SVNAction( + self.svn, notification=False ) self.action.append( - self.vcs.annotate, + self.svn.annotate, self.path, from_rev, to_rev @@ -163,7 +185,7 @@ item["number"], item["revision"].number, item["author"], - datetime.strftime(date,DATETIME_FORMAT), + rabbitvcs.util.helper.format_datetime(date), item["line"] ]) @@ -179,36 +201,106 @@ item["number"], item["revision"].number, item["author"], - datetime.strftime(date,DATETIME_FORMAT), + rabbitvcs.util.helper.format_datetime(date), item["line"] ) return text + +class GitAnnotate(Annotate): + def __init__(self, path, revision=None): + Annotate.__init__(self, path, revision) + + self.git = self.vcs.git(path) + + if revision is None: + revision = "HEAD" + + self.path = path + self.get_widget("from_revision_container").hide() + self.get_widget("to_show_log").hide() + self.get_widget("to").set_text(str(revision)) + + self.table = rabbitvcs.ui.widget.Table( + self.get_widget("table"), + [gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, + gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Line"), _("Revision"), _("Author"), + _("Date"), _("Text")] + ) + self.table.allow_multiple() + + self.load() + + # + # Helper methods + # - @gtk_unsafe - def enable_saveas(self): - self.get_widget("save").set_sensitive(True) + def load(self): + to_rev = self.git.revision(self.get_widget("to").get_text()) + + self.action = GitAction( + self.git, + notification=False + ) - def disable_saveas(self): - self.get_widget("save").set_sensitive(False) + self.action.append( + self.git.annotate, + self.path, + to_rev + ) + self.action.append(self.populate_table) + self.action.append(self.enable_saveas) + self.action.start() - def save(self, path=None): - if path is None: - from rabbitvcs.ui.dialog import FileSaveAs - dialog = FileSaveAs() - path = dialog.run() + @gtk_unsafe + def populate_table(self): + blamedict = self.action.get_result(0) - if path is not None: - fh = open(path, "w") - fh.write(self.generate_string_from_result()) - fh.close() + self.table.clear() + for item in blamedict: + self.table.append([ + item["number"], + item["revision"][:7], + item["author"], + rabbitvcs.util.helper.format_datetime(item["date"]), + item["line"] + ]) + + def generate_string_from_result(self): + blamedict = self.action.get_result(0) + + text = "" + for item in blamedict: + text += "%s\t%s\t%s\t%s\t%s\n" % ( + item["number"], + item["revision"][:7], + item["author"], + rabbitvcs.util.helper.format_datetime(item["date"]), + item["line"] + ) + + return text + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNAnnotate, + rabbitvcs.vcs.VCS_GIT: GitAnnotate +} + +def annotate_factory(vcs, path, revision=None): + if not vcs: + guess = rabbitvcs.vcs.guess(path) + vcs = guess["vcs"] + + return classes_map[vcs](path, revision) if __name__ == "__main__": - from rabbitvcs.ui import main - (options, args) = main(usage="Usage: rabbitvcs annotate [url@rev]") - - pathrev = rabbitvcs.lib.helper.parse_path_revision_string(args.pop(0)) + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT + (options, paths) = main( + [REVISION_OPT, VCS_OPT], + usage="Usage: rabbitvcs annotate url [-r REVISION]" + ) - window = Annotate(pathrev[0], pathrev[1]) + window = annotate_factory(options.vcs, paths[0], options.revision) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/applypatch.py rabbitvcs-0.15.0.5/rabbitvcs/ui/applypatch.py --- rabbitvcs-0.13.1/rabbitvcs/ui/applypatch.py 2009-11-13 17:47:25.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/applypatch.py 2010-12-10 21:55:25.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,9 +29,9 @@ import commands from rabbitvcs.ui import InterfaceNonView -from rabbitvcs.ui.action import VCSAction -import rabbitvcs.lib.vcs -from rabbitvcs.lib.log import Log +from rabbitvcs.ui.action import SVNAction +import rabbitvcs.vcs +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.applypatch") @@ -47,8 +47,8 @@ def __init__(self, paths): InterfaceNonView.__init__(self) self.paths = paths - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - self.common = rabbitvcs.lib.helper.get_common_directory(paths) + self.vcs = rabbitvcs.vcs.VCS() + self.common = rabbitvcs.util.helper.get_common_directory(paths) def choose_patch_path(self): path = None @@ -68,6 +68,9 @@ return path def choose_patch_dir(self): + if len(self.paths) == 1 and os.path.isdir(self.paths[0]): + return self.paths[0] + dir = None dialog = gtk.FileChooserDialog( @@ -86,7 +89,13 @@ dialog.destroy() return dir - + +class SVNApplyPatch(ApplyPatch): + def __init__(self, paths): + ApplyPatch.__init__(self, paths) + + self.svn = self.vcs.svn() + def start(self): path = self.choose_patch_path() @@ -99,23 +108,62 @@ return ticks = 2 - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.set_pbar_ticks(ticks) self.action.append(self.action.set_header, _("Apply Patch")) self.action.append(self.action.set_status, _("Applying Patch File...")) - self.action.append(self.vcs.apply_patch, path, base_dir) + self.action.append(self.svn.apply_patch, path, base_dir) self.action.append(self.action.set_status, _("Patch File Applied")) self.action.append(self.action.finish) self.action.start() + +class GitApplyPatch(ApplyPatch): + def __init__(self, paths): + ApplyPatch.__init__(self, paths) + + self.git = self.vcs.git(paths[0]) + + def start(self): + path = self.choose_patch_path() + # If empty path, means we've cancelled + if not path: + return + + base_dir = self.choose_patch_dir() + if not base_dir: + return + + ticks = 2 + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + self.action.set_pbar_ticks(ticks) + self.action.append(self.action.set_header, _("Apply Patch")) + self.action.append(self.action.set_status, _("Applying Patch File...")) + self.action.append(self.git.apply_patch, path, base_dir) + self.action.append(self.action.set_status, _("Patch File Applied")) + self.action.append(self.action.finish) + self.action.start() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNApplyPatch, + rabbitvcs.vcs.VCS_GIT: GitApplyPatch +} + +def applypatch_factory(paths): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths) + if __name__ == "__main__": from rabbitvcs.ui import main (options, paths) = main(usage="Usage: rabbitvcs applypatch [path1] [path2] ...") - window = ApplyPatch(paths) + window = applypatch_factory(paths) window.register_gtk_quit() window.start() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/branches.py rabbitvcs-0.15.0.5/rabbitvcs/ui/branches.py --- rabbitvcs-0.13.1/rabbitvcs/ui/branches.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/branches.py 2010-12-29 15:51:16.000000000 +0000 @@ -0,0 +1,325 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os + +import pygtk +import gobject +import gtk +import pango + +from datetime import datetime +import time + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.action import GitAction +from rabbitvcs.ui.log import log_dialog_factory +import rabbitvcs.ui.widget +from rabbitvcs.ui.dialog import DeleteConfirmation +import rabbitvcs.util.helper +import rabbitvcs.vcs + +from rabbitvcs import gettext +_ = gettext.gettext + +STATE_ADD = 0 +STATE_EDIT = 1 + +class GitBranchManager(InterfaceView): + """ + Provides a UI interface to manage items + + """ + + state = STATE_ADD + + def __init__(self, path, revision=""): + InterfaceView.__init__(self, "manager", "Manager") + + self.path = path + + self.get_widget("right_side").show() + self.get_widget("Manager").set_size_request(695, -1) + self.get_widget("Manager").set_title(_("Branch Manager")) + self.get_widget("items_label").set_markup(_("Branches")) + + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) + self.revision = self.git.revision(revision) + + self.selected_branch = None + self.items_treeview = rabbitvcs.ui.widget.Table( + self.get_widget("items_treeview"), + [rabbitvcs.ui.widget.TYPE_MARKUP], + [_("Branch")], + callbacks={ + "mouse-event": self.on_treeview_mouse_event, + "key-event": self.on_treeview_key_event + } + ) + self.initialize_detail() + self.load() + + if self.revision: + revision_branches = self.git.branch_list(self.revision) + self.show_edit(revision_branches[0].name) + else: + self.show_add() + + def on_destroy(self, widget): + self.destroy() + + def on_close_clicked(self, widget): + self.close() + + def initialize_detail(self): + self.detail_container = self.get_widget("detail_container") + + vbox = gtk.VBox(False, 6) + + # Set up the Branch line + label = gtk.Label(_("Name:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=.5) + self.branch_entry = gtk.Entry() + self.branch_name_container = gtk.HBox(False, 0) + self.branch_name_container.pack_start(label, False, False, 0) + self.branch_name_container.pack_start(self.branch_entry, False, False, 0) + vbox.pack_start(self.branch_name_container, False, False, 0) + + # Set up the Commit-sha line + label = gtk.Label(_("Start Point:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=.5) + self.start_point_entry = gtk.Entry() + self.start_point_entry.set_size_request(300, -1) + self.start_point_container = gtk.HBox(False, 0) + self.log_dialog_button = gtk.Button() + self.log_dialog_button.connect("clicked", self.on_log_dialog_button_clicked) + image = gtk.Image() + image.set_from_icon_name("rabbitvcs-show_log", 2) + self.log_dialog_button.set_image(image) + self.start_point_container.pack_start(label, False, False, 0) + self.start_point_container.pack_start(self.start_point_entry, False, False, 0) + self.start_point_container.pack_start(self.log_dialog_button, False, False, 0) + vbox.pack_start(self.start_point_container, False, False, 0) + + # Set up the Track line + label = gtk.Label("") + label.set_size_request(90, -1) + self.track_checkbox = gtk.CheckButton(_("Keep old branch's history")) + self.track_container = gtk.HBox(False, 0) + self.track_container.pack_start(label, False, False, 0) + self.track_container.pack_start(self.track_checkbox, False, False, 0) + vbox.pack_start(self.track_container, False, False, 0) + + # Set up the checkout line + label = gtk.Label("") + label.set_size_request(90, -1) + self.checkout_checkbox = gtk.CheckButton(_("Set as active branch")) + self.checkout_container = gtk.HBox(False, 0) + self.checkout_container.pack_start(label, False, False, 0) + self.checkout_container.pack_start(self.checkout_checkbox, False, False, 0) + vbox.pack_start(self.checkout_container, False, False, 0) + + # Set up Save button + label = gtk.Label("") + label.set_size_request(90, -1) + self.save_button = gtk.Button(label=_("Save")) + self.save_button.connect("clicked", self.on_save_clicked) + self.save_container = gtk.HBox(False, 0) + self.save_container.pack_start(label, False, False, 0) + self.save_container.pack_start(self.save_button, False, False, 0) + vbox.pack_start(self.save_container, False, False, 0) + + # Set up the Revision line + label = gtk.Label(_("Revision:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=0) + self.revision_label = gtk.Label("") + self.revision_label.set_properties(xalign=0,selectable=True) + self.revision_label.set_line_wrap(True) + self.revision_container = gtk.HBox(False, 0) + self.revision_container.pack_start(label, False, False, 0) + self.revision_container.pack_start(self.revision_label, False, False, 0) + vbox.pack_start(self.revision_container, False, False, 0) + + # Set up the Log Message line + label = gtk.Label(_("Message:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=0) + self.message_label = gtk.Label("") + self.message_label.set_properties(xalign=0,yalign=0,selectable=True) + self.message_label.set_line_wrap(True) + self.message_label.set_size_request(250, -1) + self.message_container = gtk.HBox(False, 0) + self.message_container.pack_start(label, False, False, 0) + self.message_container.pack_start(self.message_label, False, False, 0) + vbox.pack_start(self.message_container, False, False, 0) + + self.add_containers = [self.branch_name_container, self.track_container, + self.save_container, self.start_point_container, + self.checkout_container] + + self.view_containers = [self.branch_name_container, self.revision_container, + self.message_container, self.save_container, self.checkout_container] + + self.all_containers = [self.branch_name_container, self.track_container, + self.revision_container, self.message_container, self.save_container, + self.start_point_container, self.checkout_container] + + vbox.show() + self.detail_container.add(vbox) + + def load(self): + self.items_treeview.clear() + + self.branch_list = self.git.branch_list() + for item in self.branch_list: + name = item.name + if item.tracking: + name = "%s" % name + self.items_treeview.append([name]) + + def on_add_clicked(self, widget): + self.show_add() + + def on_delete_clicked(self, widget): + selected = self.items_treeview.get_selected_row_items(1) + + confirm = rabbitvcs.ui.dialog.Confirmation(_("Are you sure you want to delete %s?" % ", ".join(selected))) + result = confirm.run() + + if result == gtk.RESPONSE_OK or result == True: + for branch in selected: + self.git.branch_delete(branch) + + self.load() + self.show_add() + + def on_save_clicked(self, widget): + if self.state == STATE_ADD: + branch_name = self.branch_entry.get_text() + branch_track = self.track_checkbox.get_active() + start_point = self.git.revision(self.start_point_entry.get_text()) + + self.git.branch(branch_name, revision=start_point) + elif self.state == STATE_EDIT: + branch_name = self.branch_entry.get_text() + branch_track = self.track_checkbox.get_active() + + if self.selected_branch.name != branch_name: + self.git.branch_rename(self.selected_branch.name, branch_name) + + if self.checkout_checkbox.get_active(): + self.git.checkout([], self.git.revision(branch_name)) + + self.load() + self.show_edit(branch_name) + + def on_treeview_key_event(self, treeview, data=None): + if gtk.gdk.keyval_name(data.keyval) in ("Up", "Down", "Return"): + self.on_treeview_event(treeview, data) + + def on_treeview_mouse_event(self, treeview, data=None): + self.on_treeview_event(treeview, data) + + def on_treeview_event(self, treeview, data): + selected = self.items_treeview.get_selected_row_items(0) + if len(selected) > 0: + if len(selected) == 1: + branch_name = selected[0] + if branch_name.startswith(""): + branch_name = branch_name[3:-4] + + self.show_edit(branch_name) + self.get_widget("delete").set_sensitive(True) + else: + self.show_add() + + def show_containers(self, containers): + for container in self.all_containers: + container.hide() + for container in containers: + container.show_all() + + def show_add(self): + self.state = STATE_ADD + + revision = "HEAD" + if self.revision: + revision = unicode(self.revision) + + self.items_treeview.unselect_all() + self.branch_entry.set_text("") + self.save_button.set_label(_("Add")) + self.start_point_entry.set_text(revision) + self.track_checkbox.set_active(True) + self.checkout_checkbox.set_sensitive(True) + self.checkout_checkbox.set_active(False) + self.show_containers(self.add_containers) + self.get_widget("detail_label").set_markup(_("Add Branch")) + + def show_edit(self, branch_name): + self.state = STATE_EDIT + + self.selected_branch = None + for item in self.branch_list: + if item.name == branch_name: + self.selected_branch = item + break + + self.save_button.set_label(_("Save")) + + self.branch_entry.set_text(self.selected_branch.name) + self.revision_label.set_text(unicode(self.selected_branch.revision)) + self.message_label.set_text(self.selected_branch.message.rstrip("\n")) + if self.selected_branch.tracking: + self.checkout_checkbox.set_active(True) + self.checkout_checkbox.set_sensitive(False) + else: + self.checkout_checkbox.set_active(False) + self.checkout_checkbox.set_sensitive(True) + + self.show_containers(self.view_containers) + self.get_widget("detail_label").set_markup(_("Branch Detail")) + + def on_log_dialog_button_clicked(self, widget): + log_dialog_factory( + self.path, + ok_callback=self.on_log_dialog_closed + ) + + def on_log_dialog_closed(self, data): + if data: + self.start_point_entry.set_text(data) + +if __name__ == "__main__": + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT + (options, paths) = main( + [REVISION_OPT, VCS_OPT], + usage="Usage: rabbitvcs branch-manager path [-r revision]" + ) + + window = GitBranchManager(paths[0], revision=options.revision) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/branch.py rabbitvcs-0.15.0.5/rabbitvcs/ui/branch.py --- rabbitvcs-0.13.1/rabbitvcs/ui/branch.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/branch.py 2010-12-29 15:51:16.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,17 +25,17 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.log import LogDialog import rabbitvcs.ui.widget import rabbitvcs.ui.dialog import rabbitvcs.ui.action -import rabbitvcs.lib.helper -import rabbitvcs.lib.vcs +import rabbitvcs.util.helper +import rabbitvcs.vcs +import rabbitvcs.vcs.status from rabbitvcs import gettext _ = gettext.gettext -class Branch(InterfaceView): +class SVNBranch(InterfaceView): """ Provides a UI interface to copy/branch/tag items in the repository or working copy. @@ -47,25 +47,27 @@ def __init__(self, path, revision=None): InterfaceView.__init__(self, "branch", "Branch") - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() self.path = path self.revision = revision - - repo_paths = rabbitvcs.lib.helper.get_repository_paths() + + status = self.vcs.status(self.path) + + repo_paths = rabbitvcs.util.helper.get_repository_paths() self.from_urls = rabbitvcs.ui.widget.ComboBox( self.get_widget("from_urls"), repo_paths ) self.to_urls = rabbitvcs.ui.widget.ComboBox( self.get_widget("to_urls"), - rabbitvcs.lib.helper.get_repository_paths() + rabbitvcs.util.helper.get_repository_paths() ) - if self.vcs.is_path_repository_url(path): - self.from_urls.set_child_text(path) - else: - self.to_urls.set_child_text(path) + repository_url = self.svn.get_repo_url(path) + self.from_urls.set_child_text(repository_url) + self.to_urls.set_child_text(repository_url) self.message = rabbitvcs.ui.widget.TextView( self.get_widget("message") @@ -73,14 +75,13 @@ self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( self.get_widget("revision_container"), - self.vcs, + self.svn, revision=revision, url_combobox=self.from_urls, expand=True ) - if (self.revision is None and (self.vcs.has_modified(path) - or self.vcs.is_modified(path))): + if (self.revision is None and status.has_modified()): self.revision_selector.set_kind_working() def on_destroy(self, widget): @@ -99,20 +100,20 @@ revision = self.revision_selector.get_revision_object() self.hide() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.set_log_message(self.message.get_text()) self.action.append( - rabbitvcs.lib.helper.save_log_message, + rabbitvcs.util.helper.save_log_message, self.message.get_text() ) self.action.append(self.action.set_header, _("Branch/tag")) self.action.append(self.action.set_status, _("Running Branch/tag Command...")) - self.action.append(self.vcs.copy, src, dest, revision) + self.action.append(self.svn.copy, src, dest, revision) self.action.append(self.action.set_status, _("Completed Branch/tag")) self.action.append(self.action.finish) self.action.start() @@ -131,13 +132,24 @@ def on_repo_browser_closed(self, new_url): self.from_urls.set_child_text(new_url) +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNBranch +} + +def branch_factory(vcs, path, revision=None): + if not vcs: + guess = rabbitvcs.vcs.guess(path) + vcs = guess["vcs"] + + return classes_map[vcs](path, revision) + if __name__ == "__main__": - from rabbitvcs.ui import main, REVISION_OPT + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT (options, args) = main( - [REVISION_OPT], + [REVISION_OPT, VCS_OPT], usage="Usage: rabbitvcs branch [url_or_path]" ) - window = Branch(args[0], options.revision) + window = branch_factory(options.vcs, args[0], options.revision) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/browser.py rabbitvcs-0.15.0.5/rabbitvcs/ui/browser.py --- rabbitvcs-0.13.1/rabbitvcs/ui/browser.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/browser.py 2011-10-21 17:07:55.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,16 +29,16 @@ from datetime import datetime from rabbitvcs.ui import InterfaceView -from rabbitvcs.lib.contextmenu import GtkContextMenu, GtkContextMenuCaller, \ +from rabbitvcs.util.contextmenu import GtkContextMenu, GtkContextMenuCaller, \ GtkFilesContextMenuConditions -from rabbitvcs.lib.contextmenuitems import * +from rabbitvcs.util.contextmenuitems import * import rabbitvcs.ui.widget import rabbitvcs.ui.dialog import rabbitvcs.ui.action -import rabbitvcs.lib.helper -import rabbitvcs.lib.vcs -from rabbitvcs.lib.log import Log -from rabbitvcs.lib.decorators import gtk_unsafe +import rabbitvcs.util.helper +import rabbitvcs.vcs +from rabbitvcs.util.log import Log +from rabbitvcs.util.decorators import gtk_unsafe log = Log("rabbitvcs.ui.browser") @@ -47,19 +47,26 @@ gtk.gdk.threads_init() -class Browser(InterfaceView, GtkContextMenuCaller): +class SVNBrowser(InterfaceView, GtkContextMenuCaller): def __init__(self, url): InterfaceView.__init__(self, "browser", "Browser") - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - self.url = self.vcs.get_repo_url(url) + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() + + self.url = "" + if self.svn.is_in_a_or_a_working_copy(url): + action = rabbitvcs.ui.action.SVNAction(self.svn, notification=False, run_in_thread=False) + self.url = action.run_single(self.svn.get_repo_url, url) + elif self.svn.is_path_repository_url(url): + self.url = url self.urls = rabbitvcs.ui.widget.ComboBox( self.get_widget("urls"), - rabbitvcs.lib.helper.get_repository_paths() + rabbitvcs.util.helper.get_repository_paths() ) if self.url: - self.urls.set_child_text(self.url) + self.urls.set_child_text(rabbitvcs.util.helper.unquote_url(self.url)) # We must set a signal handler for the gtk.Entry inside the combobox # Because glade will not retain that information @@ -70,7 +77,7 @@ self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( self.get_widget("revision_container"), - self.vcs, + self.svn, url_combobox=self.urls ) @@ -107,6 +114,9 @@ "file-column-callback": self.file_column_callback, "row-activated": self.on_row_activated, "mouse-event": self.on_list_table_mouse_event + }, + flags={ + "sortable": True } ) @@ -114,18 +124,21 @@ self.url_clipboard = gtk.Clipboard() self.repo_root_url = None - if url: - rabbitvcs.lib.helper.save_repository_path(url) + if self.url: + rabbitvcs.util.helper.save_repository_path(url) self.load() def load(self): - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.url = self.urls.get_active_text() + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) revision = self.revision_selector.get_revision_object() - self.action.append(self.vcs.list, self.urls.get_active_text(), - revision=revision, recurse=False) + self.action.append( + self.svn.list, + rabbitvcs.util.helper.quote_url(self.url), + revision=revision, recurse=False) self.action.append(self.init_repo_root_url) self.action.append(self.populate_table, 0) self.action.start() @@ -147,8 +160,9 @@ ]) def init_repo_root_url(self): - if self.repo_root_url is None: - self.repo_root_url = self.vcs.get_repo_root_url(self.url) + if self.repo_root_url is None and self.svn.is_in_a_or_a_working_copy(self.url): + action = rabbitvcs.ui.action.SVNAction(self.svn, notification=False, run_in_thread=False) + self.repo_root_url = action.run_single(self.svn.get_repo_root_url, self.url) def on_destroy(self, widget): self.destroy() @@ -157,6 +171,7 @@ self.close() def on_refresh_clicked(self, widget): + rabbitvcs.util.helper.save_repository_path(self.urls.get_active_text()) self.load() def on_row_activated(self, treeview, data, col): @@ -167,11 +182,15 @@ else: self.url = path - self.urls.set_child_text(self.url) - self.load() + if self.file_column_callback(self.url) == "dir" or self.url != path: + self.urls.set_child_text(rabbitvcs.util.helper.unquote_url(self.url)) + self.load() + else: + self._open([self.url]) def on_urls_key_released(self, widget, data, userdata): if gtk.gdk.keyval_name(data.keyval) == "Return": + rabbitvcs.util.helper.save_repository_path(self.urls.get_active_text()) self.load() def file_column_callback(self, filename): @@ -184,7 +203,7 @@ for item,locked in self.items: if item.path == filename: - return self.vcs.NODE_KINDS_REVERSE[item.kind] + return self.svn.NODE_KINDS_REVERSE[item.kind] return None def sort_files(self, x, y): @@ -193,8 +212,8 @@ alphabetically. """ - xkind = self.vcs.NODE_KINDS_REVERSE[x[0].kind] - ykind = self.vcs.NODE_KINDS_REVERSE[y[0].kind] + xkind = self.svn.NODE_KINDS_REVERSE[x[0].kind] + ykind = self.svn.NODE_KINDS_REVERSE[y[0].kind] if xkind == "dir" and ykind == "dir": return cmp(x[0].repos_path, y[0].repos_path) elif xkind == "dir" and ykind == "file": @@ -218,7 +237,7 @@ """ if self.file_column_callback(row[0]) == "file": - return rabbitvcs.lib.helper.pretty_filesize(row[column]) + return rabbitvcs.util.helper.pretty_filesize(int(row[column])) return "" @@ -241,8 +260,8 @@ return "" if row[column]: - change_time = datetime.fromtimestamp(row[column]) - return change_time.strftime("%Y-%m-%d %H:%M:%S") + change_time = datetime.fromtimestamp(float(row[column])) + return rabbitvcs.util.helper.format_datetime(change_time) return str(row[column]) @@ -281,15 +300,37 @@ def get_url(self): return self.urls.get_active_text() -class BrowserDialog(Browser): + def _open(self, paths): + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, + notification=False + ) + + exported_paths = [] + for path in paths: + export_path = rabbitvcs.util.helper.get_tmp_path(os.path.basename(paths[0])) + exported_paths.append(export_path) + self.action.append(self.svn.export, paths[0], + export_path, revision=self.revision_selector.get_revision_object()) + + for path in exported_paths: + self.action.append(rabbitvcs.util.helper.open_item, path) + + self.action.start() + +class SVNBrowserDialog(SVNBrowser): def __init__(self, path, callback=None): """ Override the normal Browser class so that we can hide the window as we need. Also, provide a callback for when the close button is clicked so that we can get some desired data. """ - Browser.__init__(self, path) + self.callback = callback + + gtk.stock_add([(gtk.STOCK_CLOSE, _("Select"), 0, 0, "")]) + + SVNBrowser.__init__(self, path) def on_destroy(self, widget): pass @@ -300,7 +341,7 @@ path = self.urls.get_active_text() selected = self.list_table.get_selected_row_items(0) if len(selected) > 0: - path = selected + path = selected[0] self.callback(path) @@ -328,8 +369,8 @@ class BrowserContextMenuConditions(GtkFilesContextMenuConditions): - def __init__(self, vcs_client, paths, caller): - GtkFilesContextMenuConditions.__init__(self, vcs_client, paths) + def __init__(self, vcs, paths, caller): + GtkFilesContextMenuConditions.__init__(self, vcs, paths) self.caller = caller def _open(self, data1=None, data2=None): @@ -375,11 +416,13 @@ return (revision.kind == "head") class BrowserContextMenuCallbacks: - def __init__(self, caller, base_dir, vcs_client, paths=[]): + def __init__(self, caller, base_dir, vcs, paths=[]): self.caller = caller self.base_dir = base_dir - self.vcs_client = vcs_client + self.vcs = vcs + self.svn = self.vcs.svn() self.paths = paths + self.guess = rabbitvcs.vcs.VCS_SVN def __update_browser_url(self, url): # Make sure the Browser variables are updated with the new path @@ -400,46 +443,31 @@ return sources def _open(self, data=None, user_data=None): - self.caller.action = rabbitvcs.ui.action.VCSAction( - self.vcs_client, - notification=False - ) - - exported_paths = [] - for path in self.paths: - export_path = "/tmp/" + os.path.basename(self.paths[0]) - exported_paths.append(export_path) - self.caller.action.append(self.vcs_client.export, self.paths[0], - export_path, revision=self.__get_browser_revision()) - - for path in exported_paths: - self.caller.action.append(rabbitvcs.lib.helper.open_item, path) - - self.caller.action.start() + self.caller._open(self.paths) def show_log(self, data=None, user_data=None): - rabbitvcs.lib.helper.launch_ui_window("log", [self.paths[0]]) + rabbitvcs.util.helper.launch_ui_window("log", ["--vcs=%s" % self.guess, self.paths[0]]) def annotate(self, data=None, user_data=None): urlrev = self.paths[0] revision = self.__get_browser_revision() if revision.kind == "number": urlrev += "@" + revision.value - rabbitvcs.lib.helper.launch_ui_window("annotate", [urlrev]) + rabbitvcs.util.helper.launch_ui_window("annotate", [urlrev]) def checkout(self, data=None, user_data=None): args = [self.paths[0]] revision = self.__get_browser_revision() if revision.kind == "number": args = ["-r", revision.value] + args - rabbitvcs.lib.helper.launch_ui_window("checkout", args) + rabbitvcs.util.helper.launch_ui_window("checkout", args) def export(self, data=None, user_data=None): args = [self.paths[0]] revision = self.__get_browser_revision() if revision.kind == "number": args = ["-r", revision.value] + args - rabbitvcs.lib.helper.launch_ui_window("export", args) + rabbitvcs.util.helper.launch_ui_window("export", args) def rename(self, data=None, user_data=None): (base, filename) = os.path.split(self.paths[0]) @@ -457,12 +485,12 @@ path_to_refresh = new_url self.__update_browser_url(path_to_refresh) - self.caller.action = rabbitvcs.ui.action.VCSAction( - self.vcs_client, + self.caller.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) - self.caller.action.append(self.vcs_client.move, self.paths[0], new_url) - self.caller.action.append(self.vcs_client.list, path_to_refresh, recurse=False) + self.caller.action.append(self.svn.move, self.paths[0], new_url) + self.caller.action.append(self.svn.list, path_to_refresh, recurse=False) self.caller.action.append(self.caller.populate_table, 1) self.caller.action.start() @@ -475,12 +503,12 @@ self.__update_browser_url(path_to_refresh) - self.caller.action = rabbitvcs.ui.action.VCSAction( - self.vcs_client, + self.caller.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) - self.caller.action.append(self.vcs_client.remove, self.paths) - self.caller.action.append(self.vcs_client.list, path_to_refresh, recurse=False) + self.caller.action.append(self.svn.remove, self.paths) + self.caller.action.append(self.svn.list, path_to_refresh, recurse=False) self.caller.action.append(self.caller.populate_table, 1) self.caller.action.start() @@ -494,12 +522,12 @@ (folder_name, log_message) = result new_url = self.paths[0].rstrip("/") + "/" + folder_name - self.caller.action = rabbitvcs.ui.action.VCSAction( - self.vcs_client, + self.caller.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) - self.caller.action.append(self.vcs_client.mkdir, new_url, log_message) - self.caller.action.append(self.vcs_client.list, self.paths[0], recurse=False) + self.caller.action.append(self.svn.mkdir, new_url, log_message) + self.caller.action.append(self.svn.list, self.paths[0], recurse=False) self.caller.action.append(self.caller.populate_table, 1) self.caller.action.start() @@ -520,12 +548,12 @@ sources = self.__generate_sources_list() - self.caller.action = rabbitvcs.ui.action.VCSAction( - self.vcs_client, + self.caller.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) - self.caller.action.append(self.vcs_client.copy_all, sources, new_url, copy_as_child=True) - self.caller.action.append(self.vcs_client.list, self.caller.get_url(), recurse=False) + self.caller.action.append(self.svn.copy_all, sources, new_url, copy_as_child=True) + self.caller.action.append(self.svn.list, self.caller.get_url(), recurse=False) self.caller.action.append(self.caller.populate_table, 1) self.caller.action.start() @@ -547,33 +575,34 @@ if response == gtk.RESPONSE_CANCEL: return - self.caller.action = rabbitvcs.ui.action.VCSAction( - self.vcs_client, + self.caller.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) - self.caller.action.append(self.vcs_client.move_all, self.paths, new_url, move_as_child=True) - self.caller.action.append(self.vcs_client.list, self.caller.get_url(), recurse=False) + self.caller.action.append(self.svn.move_all, self.paths, new_url, move_as_child=True) + self.caller.action.append(self.svn.list, self.caller.get_url(), recurse=False) self.caller.action.append(self.caller.populate_table, 1) self.caller.action.start() class BrowserContextMenu: - def __init__(self, caller, event, base_dir, vcs_client, paths=[]): + def __init__(self, caller, event, base_dir, vcs, paths=[]): self.caller = caller self.event = event self.paths = paths self.base_dir = base_dir - self.vcs_client = vcs_client + self.vcs = vcs + self.svn = self.vcs.svn() self.conditions = BrowserContextMenuConditions( - self.vcs_client, + self.vcs, paths, self.caller ) self.callbacks = BrowserContextMenuCallbacks( self.caller, self.base_dir, - self.vcs_client, + self.vcs, paths ) @@ -601,12 +630,21 @@ context_menu = GtkContextMenu(self.structure, self.conditions, self.callbacks) context_menu.show(self.event) +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNBrowser, + rabbitvcs.vcs.VCS_DUMMY: SVNBrowser +} + +def browser_factory(path): + guess = rabbitvcs.vcs.guess(path) + return classes_map[guess["vcs"]](path) + if __name__ == "__main__": from rabbitvcs.ui import main (options, url) = main( usage="Usage: rabbitvcs browser [url]" ) - window = Browser(url[0]) + window = browser_factory(url[0]) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/changes.py rabbitvcs-0.15.0.5/rabbitvcs/ui/changes.py --- rabbitvcs-0.13.1/rabbitvcs/ui/changes.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/changes.py 2011-02-08 13:00:11.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,11 +27,10 @@ from rabbitvcs.ui import InterfaceView import rabbitvcs.ui.widget -import rabbitvcs.lib.helper -from rabbitvcs.lib.contextmenu import GtkContextMenu -from rabbitvcs.lib.contextmenuitems import * -from rabbitvcs.ui.log import LogDialog -from rabbitvcs.ui.action import VCSAction +import rabbitvcs.util.helper +from rabbitvcs.util.contextmenu import GtkContextMenu +from rabbitvcs.util.contextmenuitems import * +import rabbitvcs.ui.action from rabbitvcs.ui.dialog import MessageBox from rabbitvcs import gettext _ = gettext.gettext @@ -54,7 +53,7 @@ def __init__(self, path1=None, revision1=None, path2=None, revision2=None): InterfaceView.__init__(self, "changes", "Changes") - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() self.MORE_ACTIONS_CALLBACKS = [ None, @@ -67,7 +66,7 @@ ) self.more_actions.set_active(0) - repo_paths = rabbitvcs.lib.helper.get_repository_paths() + repo_paths = rabbitvcs.util.helper.get_repository_paths() self.first_urls = rabbitvcs.ui.widget.ComboBox( self.get_widget("first_urls"), repo_paths @@ -79,41 +78,7 @@ repo_paths ) self.second_urls_browse = self.get_widget("second_urls_browse") - - self.first_revision_selector = rabbitvcs.ui.widget.RevisionSelector( - self.get_widget("first_revision_container"), - self.vcs, - revision=revision1, - url_combobox=self.first_urls - ) - - self.second_revision_selector = rabbitvcs.ui.widget.RevisionSelector( - self.get_widget("second_revision_container"), - self.vcs, - revision=revision2, - url_combobox=self.second_urls - ) - - if path1 is not None: - self.first_urls.set_child_text(self.vcs.get_repo_url(path1)) - - if path2 is not None: - self.second_urls.set_child_text(self.vcs.get_repo_url(path2)) - elif path1 is not None: - self.second_urls.set_child_text(self.vcs.get_repo_url(path1)) - - self.changes_table = rabbitvcs.ui.widget.Table( - self.get_widget("changes_table"), - [rabbitvcs.ui.widget.TYPE_PATH, gobject.TYPE_STRING, - gobject.TYPE_STRING], - [_("Path"), _("Change"), _("Property Change")] - ) - - self.check_ui() - if path1 and revision1 and path2 and revision2: - self.load() - # # UI Signal Callback Methods # @@ -129,34 +94,26 @@ def on_first_urls_changed(self, widget, data=None): self.check_first_urls() - self.first_revision_selector.determine_widget_sensitivity() self.check_refresh_button() def on_second_urls_changed(self, widget, data=None): self.check_second_urls() - self.second_revision_selector.determine_widget_sensitivity() self.check_refresh_button() def on_first_urls_browse_clicked(self, widget, data=None): - from rabbitvcs.ui.browser import BrowserDialog - BrowserDialog(self.first_urls.get_active_text(), - callback=self.on_first_repo_chooser_closed) + pass def on_first_repo_chooser_closed(self, new_url): self.first_urls.set_child_text(new_url) self.check_first_urls() - self.first_revision_selector.determine_widget_sensitivity() self.check_refresh_button() def on_second_urls_browse_clicked(self, widget, data=None): - from rabbitvcs.ui.browser import BrowserDialog - BrowserDialog(self.second_urls.get_active_text(), - callback=self.on_second_repo_chooser_closed) + pass def on_second_repo_chooser_closed(self, new_url): self.second_urls.set_child_text(new_url) self.check_second_urls() - self.second_revision_selector.determine_widget_sensitivity() self.check_refresh_button() def on_changes_table_cursor_changed(self, treeview, data=None): @@ -194,7 +151,7 @@ for tup in indexes: self.selected_rows.append(tup[0]) - self.view_selected_diff() + self.view_selected_diff(sidebyside=True) # # Helper methods @@ -212,8 +169,6 @@ def check_ui(self): self.check_first_urls() self.check_second_urls() - self.first_revision_selector.determine_widget_sensitivity() - self.second_revision_selector.determine_widget_sensitivity() self.check_refresh_button() def can_first_browse_urls(self): @@ -238,26 +193,122 @@ can_browse_urls = self.can_second_browse_urls() self.second_urls_browse.set_sensitive(can_browse_urls) + + def enable_more_actions(self): + self.more_actions.set_sensitive(True) + + def disable_more_actions(self): + self.more_actions.set_sensitive(False) + + def view_selected_diff(self, sidebyside=False): + url1 = self.changes_table.get_row(self.selected_rows[0])[0] + url2 = url1 + if url1 == ".": + url1 = "" + url2 = "" + + url1 = rabbitvcs.util.helper.url_join(self.first_urls.get_active_text(), url1) + url2 = rabbitvcs.util.helper.url_join(self.second_urls.get_active_text(), url2) + rev1 = self.get_first_revision() + rev2 = self.get_second_revision() + + rabbitvcs.util.helper.launch_ui_window("diff", [ + "%s@%s" % (url1, unicode(rev1)), + "%s@%s" % (url2, unicode(rev2)), + "%s" % (sidebyside and "-s" or ""), + "--vcs=%s" % self.get_vcs_name() + ]) + + + # + # More Actions callbacks + # + + def on_more_actions_view_unified_diff(self): + url1 = self.first_urls.get_active_text() + rev1 = self.get_first_revision() + rev2 = self.get_second_revision() + url2 = self.second_urls.get_active_text() + + rabbitvcs.util.helper.launch_ui_window("diff", [ + "%s@%s" % (url1, unicode(rev1)), + "%s@%s" % (url2, unicode(rev2)), + "--vcs=%s" % self.get_vcs_name() + ]) + + def get_vcs_name(self): + vcs = rabbitvcs.vcs.VCS_DUMMY + if hasattr(self, "svn"): + vcs = rabbitvcs.vcs.VCS_SVN + elif hasattr(self, "git"): + vcs = rabbitvcs.vcs.VCS_GIT + + return vcs + +class SVNChanges(Changes): + def __init__(self, path1=None, revision1=None, path2=None, revision2=None): + Changes.__init__(self, path1, revision1, path2, revision2) + + self.svn = self.vcs.svn() + + if path1 is not None: + self.first_urls.set_child_text(self.svn.get_repo_url(path1)) + + if path2 is not None: + self.second_urls.set_child_text(self.svn.get_repo_url(path2)) + elif path1 is not None: + self.second_urls.set_child_text(self.svn.get_repo_url(path1)) + + self.first_revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("first_revision_container"), + self.svn, + revision=revision1, + url_combobox=self.first_urls + ) + + self.second_revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("second_revision_container"), + self.svn, + revision=revision2, + url_combobox=self.second_urls + ) + + self.changes_table = rabbitvcs.ui.widget.Table( + self.get_widget("changes_table"), + [gobject.TYPE_STRING, gobject.TYPE_STRING, + gobject.TYPE_STRING], + [_("Path"), _("Change"), _("Property Change")], + flags={ + "sortable": True, + "sort_on": 1 + } + ) + + self.check_ui() + + if path1 and revision1 and path2 and revision2: + self.load() + def load(self): first_url = self.first_urls.get_active_text() first_rev = self.get_first_revision() second_rev = self.get_second_revision() second_url = self.second_urls.get_active_text() - self.action = VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) self.action.append(self.disable_more_actions) self.action.append( - self.vcs.diff_summarize, + self.svn.diff_summarize, first_url, first_rev, second_url, second_rev ) - self.action.append(rabbitvcs.lib.helper.save_repository_path, first_url) - self.action.append(rabbitvcs.lib.helper.save_repository_path, second_url) + self.action.append(rabbitvcs.util.helper.save_repository_path, first_url) + self.action.append(rabbitvcs.util.helper.save_repository_path, second_url) self.action.append(self.populate_table) self.action.append(self.enable_more_actions) self.action.start() @@ -280,77 +331,92 @@ prop_changed ]) - def enable_more_actions(self): - self.more_actions.set_sensitive(True) + def on_first_urls_browse_clicked(self, widget, data=None): + from rabbitvcs.ui.browser import SVNBrowserDialog + SVNBrowserDialog(self.first_urls.get_active_text(), + callback=self.on_first_repo_chooser_closed) - def disable_more_actions(self): - self.more_actions.set_sensitive(False) + def on_second_urls_browse_clicked(self, widget, data=None): + from rabbitvcs.ui.browser import SVNBrowserDialog + SVNBrowserDialog(self.second_urls.get_active_text(), + callback=self.on_second_repo_chooser_closed) - def open_item_from_revision(self, url, revision, dest): - self.action = VCSAction( - self.vcs, - notification=False - ) - self.action.append( - self.vcs.export, - url, - dest, - revision=revision - ) - self.action.append(rabbitvcs.lib.helper.open_item, dest) - self.action.start() - - def view_selected_diff(self): - from rabbitvcs.ui.diff import SVNDiff - url1 = self.changes_table.get_row(self.selected_rows[0])[0] - url2 = url1 - if url1 == ".": - url1 = "" - url2 = "" +class GitChanges(Changes): + def __init__(self, path1=None, revision1=None, path2=None, revision2=None): + Changes.__init__(self, path1, revision1, path2, revision2) - url1 = rabbitvcs.lib.helper.url_join(self.first_urls.get_active_text(), url1) - url2 = rabbitvcs.lib.helper.url_join(self.second_urls.get_active_text(), url2) - rev1 = self.get_first_revision() - rev2 = self.get_second_revision() + self.git = self.vcs.git(path1) + + self.first_urls_browse.hide() + self.second_urls_browse.hide() - self.action = VCSAction( - self.vcs, - notification=False + if path1 is not None: + self.first_urls.set_child_text(path1) + + if path2 is not None: + self.second_urls.set_child_text(path2) + elif path1 is not None: + self.second_urls.set_child_text(path1) + + self.first_revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("first_revision_container"), + self.git, + revision=revision1, + url_combobox=self.first_urls ) - self.action.append( - SVNDiff, - url1, - (rev1.value and rev1.value or "HEAD"), - url2, - (rev2.value and rev2.value or "HEAD") + + self.second_revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("second_revision_container"), + self.git, + revision=revision2, + url_combobox=self.second_urls ) - self.action.start() - - # - # More Actions callbacks - # - def on_more_actions_view_unified_diff(self): - from rabbitvcs.ui.diff import SVNDiff + self.changes_table = rabbitvcs.ui.widget.Table( + self.get_widget("changes_table"), + [gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Path"), _("Change")] + ) + + self.check_ui() + if path1 and revision1 and path2 and revision2: + self.load() + + def load(self): first_url = self.first_urls.get_active_text() first_rev = self.get_first_revision() second_rev = self.get_second_revision() second_url = self.second_urls.get_active_text() - self.action = VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.GitAction( + self.git, notification=False ) + self.action.append(self.disable_more_actions) self.action.append( - SVNDiff, - first_url, - (first_rev.value and first_rev.value or "HEAD"), - second_url, - (second_rev.value and second_rev.value or "HEAD") + self.git.diff_summarize, + first_url, + first_rev, + second_url, + second_rev ) + self.action.append(rabbitvcs.util.helper.save_repository_path, first_url) + self.action.append(rabbitvcs.util.helper.save_repository_path, second_url) + self.action.append(self.populate_table) + self.action.append(self.enable_more_actions) self.action.start() + def populate_table(self): + # returns a list of dicts(path, summarize_kind, node_kind, prop_changed) + summary = self.action.get_result(1) + + self.changes_table.clear() + for item in summary: + self.changes_table.append([ + item.path, + item.action + ]) class MenuOpenFirst(MenuItem): @@ -374,9 +440,9 @@ icon = "rabbitvcs-compare" class ChangesContextMenuConditions: - def __init__(self, caller, vcs_client): + def __init__(self, caller, vcs): self.caller = caller - self.vcs_client = vcs_client + self.vcs = vcs def open_first(self): return ( @@ -403,29 +469,27 @@ ) class ChangesContextMenuCallbacks: - def __init__(self, caller, vcs_client): + def __init__(self, caller, vcs): self.caller = caller - self.vcs_client = vcs_client + self.vcs = vcs def open_first(self, widget, data=None): path = self.caller.changes_table.get_row(self.caller.selected_rows[0])[0] if path == ".": path = "" - url = rabbitvcs.lib.helper.url_join(self.caller.first_urls.get_active_text(), path) + url = rabbitvcs.util.helper.url_join(self.caller.first_urls.get_active_text(), path) rev = self.caller.get_first_revision() - dest = "/tmp/rabbitvcs-" + str(rev) + "-" + os.path.basename(url) - self.caller.open_item_from_revision(url, rev, dest) + rabbitvcs.util.helper.launch_ui_window("open", [url, "-r", unicode(rev)]) def open_second(self, widget, data=None): path = self.caller.changes_table.get_row(self.caller.selected_rows[0])[0] if path == ".": path = "" - - url = rabbitvcs.lib.helper.url_join(self.caller.second_urls.get_active_text(), path) + + url = rabbitvcs.util.helper.url_join(self.caller.second_urls.get_active_text(), path) rev = self.caller.get_second_revision() - dest = "/tmp/rabbitvcs-" + str(rev) + "-" + os.path.basename(url) - self.caller.open_item_from_revision(url, rev, dest) + rabbitvcs.util.helper.launch_ui_window("open", [url, "-r", unicode(rev)]) def view_diff(self, widget, data=None): self.caller.view_selected_diff() @@ -437,25 +501,17 @@ url1 = "" url2 = "" - url1 = rabbitvcs.lib.helper.url_join(self.caller.first_urls.get_active_text(), url1) - url2 = rabbitvcs.lib.helper.url_join(self.caller.second_urls.get_active_text(), url2) + url1 = rabbitvcs.util.helper.url_join(self.caller.first_urls.get_active_text(), url1) + url2 = rabbitvcs.util.helper.url_join(self.caller.second_urls.get_active_text(), url2) rev1 = self.caller.get_first_revision() rev2 = self.caller.get_second_revision() - from rabbitvcs.ui.diff import SVNDiff - self.action = VCSAction( - self.vcs_client, - notification=False - ) - self.action.append( - SVNDiff, - url2, - rev2, - url1, - rev1, - sidebyside=True - ) - self.action.start() + rabbitvcs.util.helper.launch_ui_window("diff", [ + "%s@%s" % (url1, unicode(rev1)), + "%s@%s" % (url2, unicode(rev2)), + "-s", + "--vcs=%s" % self.caller.get_vcs_name() + ]) class ChangesContextMenu: """ @@ -470,16 +526,17 @@ """ self.caller = caller self.event = event - self.vcs_client = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() self.conditions = ChangesContextMenuConditions( self.caller, - self.vcs_client + self.vcs ) self.callbacks = ChangesContextMenuCallbacks( self.caller, - self.vcs_client + self.vcs ) # The first element of each tuple is a key that matches a @@ -499,18 +556,30 @@ context_menu = GtkContextMenu(self.structure, self.conditions, self.callbacks) context_menu.show(self.event) +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNChanges, + rabbitvcs.vcs.VCS_GIT: GitChanges +} + +def changes_factory(vcs, path1=None, revision1=None, path2=None, revision2=None): + if not vcs: + guess = rabbitvcs.vcs.guess(path1) + vcs = guess["vcs"] + + return classes_map[vcs](path1, revision1, path2, revision2) if __name__ == "__main__": - from rabbitvcs.ui import main + from rabbitvcs.ui import main, VCS_OPT (options, args) = main( + [VCS_OPT], usage="Usage: rabbitvcs changes [url1@rev1] [url2@rev2]" ) - pathrev1 = rabbitvcs.lib.helper.parse_path_revision_string(args.pop(0)) + pathrev1 = rabbitvcs.util.helper.parse_path_revision_string(args.pop(0)) pathrev2 = (None, None) if len(args) > 0: - pathrev2 = rabbitvcs.lib.helper.parse_path_revision_string(args.pop(0)) + pathrev2 = rabbitvcs.util.helper.parse_path_revision_string(args.pop(0)) - window = Changes(pathrev1[0], pathrev1[1], pathrev2[0], pathrev2[1]) + window = changes_factory(options.vcs, pathrev1[0], pathrev1[1], pathrev2[0], pathrev2[1]) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/checkmods.py rabbitvcs-0.15.0.5/rabbitvcs/ui/checkmods.py --- rabbitvcs-0.13.1/rabbitvcs/ui/checkmods.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/checkmods.py 2010-12-27 20:35:13.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,22 +21,23 @@ # import thread +import threading import pygtk import gobject import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.lib.contextmenu import GtkContextMenu, \ - GtkContextMenuCaller, GtkFilesContextMenuConditions -from rabbitvcs.lib.contextmenuitems import MenuItem, MenuUpdate, MenuSeparator -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.util.contextmenu import GtkFilesContextMenu, \ + GtkContextMenuCaller, GtkFilesContextMenuConditions, GtkContextMenu +from rabbitvcs.util.contextmenuitems import MenuItem, MenuUpdate, \ + MenuSeparator import rabbitvcs.ui.widget import rabbitvcs.ui.dialog import rabbitvcs.ui.action -import rabbitvcs.lib.helper -from rabbitvcs.lib.log import Log -from rabbitvcs.lib.decorators import gtk_unsafe +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log +from rabbitvcs.util.decorators import gtk_unsafe log = Log("rabbitvcs.ui.checkmods") @@ -45,7 +46,7 @@ gtk.gdk.threads_init() -class CheckForModifications(InterfaceView, GtkContextMenuCaller): +class SVNCheckForModifications(InterfaceView): """ Provides a way for the user to see what files have been changed on the repository. @@ -57,10 +58,119 @@ self.paths = paths self.base_dir = base_dir - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() + self.notebook = self.get_widget("notebook") + + self.local_mods = SVNCheckLocalModifications(self, \ + self.vcs, \ + self.paths, \ + self.base_dir) + self.remote_mods = SVNCheckRemoteModifications(self, \ + self.vcs, \ + self.paths, \ + self.base_dir) + + self.remote_refreshed = False + + self.load() + + def on_destroy(self, widget): + self.destroy() + + def on_close_clicked(self, widget): + self.close() + + def on_refresh_clicked(self, widget): + if self.notebook.get_current_page() == 0: + self.local_mods.refresh() + else: + self.remote_mods.refresh() + + def on_notebook_switch_page(self, page, data, page_num): + if page_num == 1 and self.remote_refreshed == False: + self.remote_mods.refresh() + self.remote_refreshed = True + + # + # Helper methods + # + + def load(self): + self.local_mods.refresh() + +class SVNCheckLocalModifications(GtkContextMenuCaller): + def __init__(self, caller, vcs, paths, base_dir): + self.caller = caller + self.vcs = vcs + self.svn = vcs.svn() self.items = None + self.paths = paths + self.base_dir = base_dir + self.files_table = rabbitvcs.ui.widget.Table( - self.get_widget("files_table"), + self.caller.get_widget("local_files_table"), + [gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Path"), _("Status"), _("Extension")], + filters=[{ + "callback": rabbitvcs.ui.widget.path_filter, + "user_data": { + "base_dir": base_dir, + "column": 0 + } + }], + callbacks={ + "row-activated": self.on_files_table_row_activated, + "mouse-event": self.on_files_table_mouse_event + } + ) + + def on_files_table_row_activated(self, treeview, event, col): + paths = self.files_table.get_selected_row_items(0) + self.diff_local(paths[0]) + + def on_files_table_mouse_event(self, treeview, data=None): + if data is not None and data.button == 3: + paths = self.files_table.get_selected_row_items(0) + GtkFilesContextMenu(self, data, self.base_dir, paths).show() + + def refresh(self): + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, + notification=False + ) + self.action.append(self.svn.get_items, self.paths, self.svn.STATUSES_FOR_CHECK) + self.action.append(self.populate_files_table) + self.action.start() + + @gtk_unsafe + def populate_files_table(self): + self.files_table.clear() + self.items = self.action.get_result(0) + for item in self.items: + self.files_table.append([ + item.path, + item.simple_content_status(), + rabbitvcs.util.helper.get_file_extension(item.path) + ]) + + def diff_local(self, path): + rabbitvcs.util.helper.launch_diff_tool(path) + + def on_context_menu_command_finished(self): + self.refresh() + +class SVNCheckRemoteModifications(GtkContextMenuCaller): + def __init__(self, caller, vcs, paths, base_dir): + self.caller = caller + self.vcs = vcs + self.svn = vcs.svn() + self.items = None + self.paths = paths + self.base_dir = base_dir + + self.files_table = rabbitvcs.ui.widget.Table( + self.caller.get_widget("remote_files_table"), [gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], @@ -80,35 +190,21 @@ } ) - self.load() - - def on_destroy(self, widget): - self.destroy() - - def on_close_clicked(self, widget): - self.close() - - def on_refresh_clicked(self, widget): - self.load() - def on_files_table_row_activated(self, treeview, event, col): paths = self.files_table.get_selected_row_items(0) self.diff_remote(paths[0]) def on_files_table_mouse_event(self, treeview, data=None): if data is not None and data.button == 3: - self.show_files_table_popup_menu(treeview, data) + paths = self.files_table.get_selected_row_items(0) + CheckRemoteModsContextMenu(self, data, self.base_dir, self.vcs, paths).show() - # - # Helper methods - # - - def load(self): - self.action = VCSAction( - self.vcs, + def refresh(self): + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) - self.action.append(self.vcs.get_remote_updates, self.paths) + self.action.append(self.svn.get_remote_updates, self.paths) self.action.append(self.populate_files_table) self.action.start() @@ -117,33 +213,31 @@ self.files_table.clear() self.items = self.action.get_result(0) for item in self.items: - revision_number = -1 + revision = -1 author = "" - if item.entry is not None: - revision_number = item.entry.revision.number - author = item.entry.commit_author + + if item.revision is not None: + revision = item.revision + if item.author is not None: + author = item.author self.files_table.append([ item.path, - rabbitvcs.lib.helper.get_file_extension(item.path), - item.repos_text_status, - item.repos_prop_status, - str(revision_number), + rabbitvcs.util.helper.get_file_extension(item.path), + item.remote_content, + item.remote_metadata, + str(revision), author ]) - def show_files_table_popup_menu(self, treeview, data): - paths = self.files_table.get_selected_row_items(0) - CheckModsContextMenu(self, data, self.base_dir, self.vcs, paths).show() - def diff_remote(self, path): from rabbitvcs.ui.diff import SVNDiff path_local = path - path_remote = self.vcs.get_repo_url(path_local) + path_remote = self.svn.get_repo_url(path_local) - self.action = VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) self.action.append( @@ -155,6 +249,9 @@ ) self.action.start() + def on_context_menu_command_finished(self): + self.refresh() + class MenuViewDiff(MenuItem): identifier = "RabbitVCS::View_Diff" label = _("View unified diff") @@ -165,9 +262,9 @@ label = _("Compare side by side") icon = "rabbitvcs-compare" -class CheckModsContextMenuConditions(GtkFilesContextMenuConditions): - def __init__(self, vcs_client, paths=[]): - GtkFilesContextMenuConditions.__init__(self, vcs_client, paths) +class CheckRemoteModsContextMenuConditions(GtkFilesContextMenuConditions): + def __init__(self, vcs, paths=[]): + GtkFilesContextMenuConditions.__init__(self, vcs, paths) def update(self, data=None): return True @@ -180,18 +277,20 @@ return (self.path_dict["exists"] and self.path_dict["length"] == 1) -class CheckModsContextMenuCallbacks: - def __init__(self, caller, base_dir, vcs_client, paths=[]): +class CheckRemoteModsContextMenuCallbacks: + def __init__(self, caller, base_dir, vcs, paths=[]): self.caller = caller self.base_dir = base_dir - self.vcs_client = vcs_client + self.vcs = vcs + self.svn = self.vcs.svn() self.paths = paths def update(self, data1=None, data2=None): - rabbitvcs.lib.helper.launch_ui_window( + proc = rabbitvcs.util.helper.launch_ui_window( "update", self.paths ) + self.caller.rescan_after_process_exit(proc, self.paths) def view_diff(self, data1=None, data2=None): self.caller.diff_remote(self.paths[0]) @@ -200,10 +299,10 @@ from rabbitvcs.ui.diff import SVNDiff path_local = self.paths[0] - path_remote = self.vcs_client.get_repo_url(path_local) + path_remote = self.svn.get_repo_url(path_local) - self.action = VCSAction( - self.vcs_client, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, notification=False ) self.action.append( @@ -216,20 +315,20 @@ ) self.action.start() -class CheckModsContextMenu: - def __init__(self, caller, event, base_dir, vcs_client, paths=[]): +class CheckRemoteModsContextMenu: + def __init__(self, caller, event, base_dir, vcs, paths=[]): self.caller = caller self.event = event self.paths = paths self.base_dir = base_dir - self.vcs_client = vcs_client + self.vcs = vcs - self.conditions = CheckModsContextMenuConditions(self.vcs_client, paths) - self.callbacks = CheckModsContextMenuCallbacks( + self.conditions = CheckRemoteModsContextMenuConditions(self.vcs, paths) + self.callbacks = CheckRemoteModsContextMenuCallbacks( self.caller, self.base_dir, - self.vcs_client, + self.vcs, paths ) @@ -247,6 +346,14 @@ context_menu = GtkContextMenu(self.structure, self.conditions, self.callbacks) context_menu.show(self.event) +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNCheckForModifications +} + +def checkmods_factory(paths, base_dir): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths, base_dir) + if __name__ == "__main__": from rabbitvcs.ui import main, BASEDIR_OPT (options, paths) = main( @@ -254,6 +361,6 @@ usage="Usage: rabbitvcs checkmods [url_or_path]" ) - window = CheckForModifications(paths, options.base_dir) + window = checkmods_factory(paths, options.base_dir) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/checkout.py rabbitvcs-0.15.0.5/rabbitvcs/ui/checkout.py --- rabbitvcs-0.13.1/rabbitvcs/ui/checkout.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/checkout.py 2011-06-11 18:56:20.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,13 +28,12 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.log import LogDialog import rabbitvcs.ui.widget import rabbitvcs.ui.dialog import rabbitvcs.ui.action -import rabbitvcs.lib.helper -import rabbitvcs.lib.vcs - +import rabbitvcs.util.helper +import rabbitvcs.vcs +from rabbitvcs.ui.updateto import GitUpdateToRevision from rabbitvcs import gettext _ = gettext.gettext @@ -48,16 +47,13 @@ def __init__(self, path=None, url=None, revision=None): InterfaceView.__init__(self, "checkout", "Checkout") - - - self.get_widget("Checkout").set_title(_("Checkout - %s") % path) self.path = path - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() self.repositories = rabbitvcs.ui.widget.ComboBox( self.get_widget("repositories"), - rabbitvcs.lib.helper.get_repository_paths() + rabbitvcs.util.helper.get_repository_paths() ) # We must set a signal handler for the gtk.Entry inside the combobox @@ -67,24 +63,15 @@ self.on_repositories_key_released ) - self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( - self.get_widget("revision_container"), - self.vcs, - revision=revision, - url_combobox=self.repositories, - expand=True - ) - - self.destination = rabbitvcs.lib.helper.get_user_path() + self.destination = rabbitvcs.util.helper.get_user_path() if path is not None: self.destination = path self.get_widget("destination").set_text(path) - + if url is not None: self.repositories.set_child_text(url) self.complete = False - self.check_form() # # UI Signal Callback Methods @@ -106,6 +93,63 @@ def on_cancel_clicked(self, widget): self.close() + def on_file_chooser_clicked(self, widget, data=None): + chooser = rabbitvcs.ui.dialog.FolderChooser() + path = chooser.run() + if path is not None: + self.get_widget("destination").set_text(path) + + def on_repositories_key_released(self, widget, data, userdata=None): + if gtk.gdk.keyval_name(data.keyval) == "Return": + if self.complete: + self.on_ok_clicked(widget) + + def on_destination_changed(self, widget, data=None): + self.check_form() + + def on_destination_key_released(self, widget, data): + if gtk.gdk.keyval_name(data.keyval) == "Return": + if self.complete: + self.on_ok_clicked(widget) + + def on_repo_chooser_clicked(self, widget, data=None): + from rabbitvcs.ui.browser import SVNBrowserDialog + SVNBrowserDialog(self.repositories.get_active_text(), + callback=self.on_repo_chooser_closed) + + def on_repo_chooser_closed(self, new_url): + self.repositories.set_child_text(new_url) + self.check_form() + + def check_form(self): + self.complete = True + if self.repositories.get_active_text() == "": + self.complete = False + if self.get_widget("destination").get_text() == "": + self.complete = False + + self.get_widget("ok").set_sensitive(self.complete) + +class SVNCheckout(Checkout): + def __init__(self, path=None, url=None, revision=None): + Checkout.__init__(self, path, url, revision) + self.get_widget("Checkout").set_title(_("Checkout - %s") % path) + + self.svn = self.vcs.svn() + + self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("revision_container"), + self.svn, + revision=revision, + url_combobox=self.repositories, + expand=True + ) + + self.get_widget("options_box").show() + self.get_widget("revision_selector_box").show() + + self.check_form() + def on_ok_clicked(self, widget): url = self.repositories.get_active_text() path = self._get_path() @@ -119,16 +163,16 @@ revision = self.revision_selector.get_revision_object() self.hide() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Checkout")) self.action.append(self.action.set_status, _("Running Checkout Command...")) - self.action.append(rabbitvcs.lib.helper.save_repository_path, url) + self.action.append(rabbitvcs.util.helper.save_repository_path, url) self.action.append( - self.vcs.checkout, - url, + self.svn.checkout, + rabbitvcs.util.helper.quote_url(url), path, recurse=recursive, revision=revision, @@ -138,13 +182,8 @@ self.action.append(self.action.finish) self.action.start() - def on_file_chooser_clicked(self, widget, data=None): - chooser = rabbitvcs.ui.dialog.FolderChooser() - path = chooser.run() - if path is not None: - self.get_widget("destination").set_text(path) - def on_repositories_changed(self, widget, data=None): + # Do not use quoting for this bit url = self.repositories.get_active_text() tmp = url.replace("//", "/").split("/")[1:] append = "" @@ -158,50 +197,56 @@ if append in ("http:", "https:", "file:", "svn:", "svn+ssh:"): append = "" break - + self.get_widget("destination").set_text( os.path.join(self.destination, append) ) self.check_form() - def on_repositories_key_released(self, widget, data, userdata=None): - if gtk.gdk.keyval_name(data.keyval) == "Return": - if self.complete: - self.on_ok_clicked(widget) - - def on_destination_changed(self, widget, data=None): - self.check_form() - - def on_destination_key_released(self, widget, data): - if gtk.gdk.keyval_name(data.keyval) == "Return": - if self.complete: - self.on_ok_clicked(widget) +class GitCheckout(GitUpdateToRevision): + def __init__(self, path, url, revision): + GitUpdateToRevision.__init__(self, path, revision) + self.get_widget("Update").set_title(_("Checkout - %s") % path) + self.get_widget("options_box").hide() + +class GitCheckoutQuiet: + def __init__(self, path): + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) + self.action = rabbitvcs.ui.action.GitAction( + self.git, + run_in_thread=False + ) - def on_repo_chooser_clicked(self, widget, data=None): - from rabbitvcs.ui.browser import BrowserDialog - BrowserDialog(self.repositories.get_active_text(), - callback=self.on_repo_chooser_closed) + self.action.append(self.git.checkout, [path]) + self.action.run() - def on_repo_chooser_closed(self, new_url): - self.repositories.set_child_text(new_url) - self.check_form() - - def check_form(self): - self.complete = True - if self.repositories.get_active_text() == "": - self.complete = False - if self.get_widget("destination").get_text() == "": - self.complete = False - - self.get_widget("ok").set_sensitive(self.complete) - self.revision_selector.determine_widget_sensitivity() +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNCheckout, + rabbitvcs.vcs.VCS_GIT: GitCheckout +} + +def checkout_factory(vcs, path=None, url=None, revision=None, quiet=False): + if not vcs: + guess = rabbitvcs.vcs.guess(path) + vcs = guess["vcs"] + + if vcs == rabbitvcs.vcs.VCS_DUMMY: + return SVNCheckout(path, url, revision) + elif vcs == rabbitvcs.vcs.VCS_GIT: + if quiet: + return GitCheckoutQuiet(path) + else: + return GitCheckout(path, url, revision) + + return classes_map[vcs](path, url, revision) if __name__ == "__main__": - from rabbitvcs.ui import main, REVISION_OPT + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT, QUIET_OPT (options, args) = main( - [REVISION_OPT], - usage="Usage: rabbitvcs checkout [url] [path]" + [REVISION_OPT, VCS_OPT, QUIET_OPT], + usage="Usage: rabbitvcs checkout --vcs=[git|svn] [url] [path]" ) # If two arguments are passed: @@ -220,6 +265,9 @@ else: url = args[0] - window = Checkout(path=path, url=url, revision=options.revision) - window.register_gtk_quit() - gtk.main() + if options.quiet: + window = checkout_factory(options.vcs, path=path, url=url, revision=options.revision, quiet=options.quiet) + else: + window = checkout_factory(options.vcs, path=path, url=url, revision=options.revision, quiet=options.quiet) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/clean.py rabbitvcs-0.15.0.5/rabbitvcs/ui/clean.py --- rabbitvcs-0.13.1/rabbitvcs/ui/clean.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/clean.py 2010-12-10 00:06:15.000000000 +0000 @@ -0,0 +1,110 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os + +import pygtk +import gobject +import gtk +import pango + +from datetime import datetime +import time + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.action import GitAction +import rabbitvcs.ui.widget +import rabbitvcs.util.helper +import rabbitvcs.vcs + +from rabbitvcs import gettext +_ = gettext.gettext + +class GitClean(InterfaceView): + """ + Provides a UI to clean your repository of untracked files + + """ + + def __init__(self, path): + InterfaceView.__init__(self, "clean", "Clean") + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) + self.path = path + + def on_destroy(self, widget): + self.destroy() + + def on_close_clicked(self, widget): + self.close() + + def on_cancel_clicked(self, widget): + self.close() + + def on_ok_clicked(self, widget): + remove_dir = self.get_widget("remove_directories").get_active() + remove_ignored_too = self.get_widget("remove_ignored_too").get_active() + remove_only_ignored = self.get_widget("remove_only_ignored").get_active() + dry_run = self.get_widget("dryrun").get_active() + force = self.get_widget("force").get_active() + + self.hide() + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + self.action.append(self.action.set_header, _("Clean")) + self.action.append(self.action.set_status, _("Running Clean Command...")) + self.action.append( + self.git.clean, + self.path, + remove_dir, + remove_ignored_too, + remove_only_ignored, + dry_run, + force + ) + self.action.append(self.action.set_status, _("Completed Clean")) + self.action.append(self.action.finish) + self.action.start() + + def on_remove_ignored_too_toggled(self, widget): + remove_ignored_too = self.get_widget("remove_ignored_too") + remove_only_ignored = self.get_widget("remove_only_ignored") + + if remove_ignored_too.get_active(): + remove_only_ignored.set_active(False) + + def on_remove_only_ignored_toggled(self, widget): + remove_ignored_too = self.get_widget("remove_ignored_too") + remove_only_ignored = self.get_widget("remove_only_ignored") + + if remove_only_ignored.get_active(): + remove_ignored_too.set_active(False) + +if __name__ == "__main__": + from rabbitvcs.ui import main + (options, paths) = main(usage="Usage: rabbitvcs clean path") + + window = GitClean(paths[0]) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/cleanup.py rabbitvcs-0.15.0.5/rabbitvcs/ui/cleanup.py --- rabbitvcs-0.13.1/rabbitvcs/ui/cleanup.py 2009-11-13 17:47:25.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/cleanup.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,13 +25,13 @@ import gtk from rabbitvcs.ui import InterfaceNonView -from rabbitvcs.ui.action import VCSAction -import rabbitvcs.lib.vcs +from rabbitvcs.ui.action import SVNAction +import rabbitvcs.vcs from rabbitvcs import gettext _ = gettext.gettext -class Cleanup(InterfaceNonView): +class SVNCleanup(InterfaceNonView): """ This class provides a handler to the Cleanup window view. The idea is that it displays a large folder icon with a label like @@ -43,17 +43,18 @@ def __init__(self, path): InterfaceNonView.__init__(self) self.path = path - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() def start(self): - self.action = VCSAction( - self.vcs, + self.action = SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Cleanup")) self.action.append(self.action.set_status, _("Cleaning Up...")) - self.action.append(self.vcs.cleanup, self.path) + self.action.append(self.svn.cleanup, self.path) self.action.append(self.action.set_status, _("Completed Cleanup")) self.action.append(self.action.finish) self.action.start() @@ -63,7 +64,7 @@ from rabbitvcs.ui import main (options, paths) = main(usage="Usage: rabbitvcs cleanup [path]") - window = Cleanup(paths[0]) + window = SVNCleanup(paths[0]) window.register_gtk_quit() window.start() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/clone.py rabbitvcs-0.15.0.5/rabbitvcs/ui/clone.py --- rabbitvcs-0.13.1/rabbitvcs/ui/clone.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/clone.py 2011-06-12 12:25:32.000000000 +0000 @@ -0,0 +1,146 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os.path +import urllib + +import pygtk +import gobject +import gtk + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.checkout import Checkout +import rabbitvcs.ui.widget +import rabbitvcs.ui.dialog +import rabbitvcs.ui.action +import rabbitvcs.util.helper +import rabbitvcs.vcs + +from rabbitvcs import gettext +_ = gettext.gettext + +class GitClone(Checkout): + def __init__(self, path=None, url=None): + Checkout.__init__(self, path, url) + + self.git = self.vcs.git() + + self.get_widget("Checkout").set_title(_("Clone")) + self.get_widget("repo_chooser").hide() + + self.check_form() + + def on_ok_clicked(self, widget): + url = self.repositories.get_active_text().strip() + path = self._get_path().strip() + + if not url or not path: + rabbitvcs.ui.dialog.MessageBox(_("The repository URL and destination path are both required fields.")) + return + + self.hide() + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + self.action.append(self.action.set_header, _("Clone")) + self.action.append(self.action.set_status, _("Running Clone Command...")) + self.action.append(rabbitvcs.util.helper.save_repository_path, url) + self.action.append( + self.git.clone, + url, + path + ) + self.action.append(self.action.set_status, _("Completed Clone")) + self.action.append(self.action.finish) + self.action.start() + + def on_repositories_changed(self, widget, data=None): + url = self.repositories.get_active_text() + tmp = url.replace("//", "/").split("/")[1:] + append = "" + prev = "" + while len(tmp): + prev = append + append = tmp.pop() + + if append in ("http:", "https:", "file:", "git:"): + append = "" + break + + if append.endswith(".git"): + append = append[:-4] + break + + self.get_widget("destination").set_text( + os.path.join(self.destination, append) + ) + + self.check_form() + + def check_form(self): + self.complete = True + if self.repositories.get_active_text() == "": + self.complete = False + if self.get_widget("destination").get_text() == "": + self.complete = False + + self.get_widget("ok").set_sensitive(self.complete) + +classes_map = { + rabbitvcs.vcs.VCS_GIT: GitClone +} + +def clone_factory(classes_map, vcs, path=None, url=None): + return classes_map[vcs](path, url) + +if __name__ == "__main__": + from rabbitvcs.ui import main, VCS_OPT + (options, args) = main( + [VCS_OPT], + usage="Usage: rabbitvcs clone --vcs=git [url] [path]" + ) + + # Default to using git + vcs = rabbitvcs.vcs.VCS_GIT + if options.vcs: + vcs = options.vcs + + # If two arguments are passed: + # The first argument is expected to be a url + # The second argument is expected to be a path + # If one argument is passed: + # If the argument exists, it is a path + # Otherwise, it is a url + path = url = None + if len(args) == 2: + path = args[0] + url = args[1] + elif len(args) == 1: + if os.path.exists(args[0]): + path = args[0] + else: + url = args[0] + + window = clone_factory(classes_map, vcs, path=path, url=url) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/commit.py rabbitvcs-0.15.0.5/rabbitvcs/ui/commit.py --- rabbitvcs-0.13.1/rabbitvcs/ui/commit.py 2010-03-26 14:30:36.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/commit.py 2011-06-11 18:56:20.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,14 +29,15 @@ from time import sleep from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.action import VCSAction -from rabbitvcs.lib.contextmenu import GtkFilesContextMenu, GtkContextMenuCaller +from rabbitvcs.util.contextmenu import GtkFilesContextMenu, GtkContextMenuCaller +import rabbitvcs.ui.action import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib -import rabbitvcs.lib.helper -from rabbitvcs.lib.log import Log -from rabbitvcs.lib.decorators import gtk_unsafe +import rabbitvcs.util +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log +from rabbitvcs.util.decorators import gtk_unsafe +import rabbitvcs.vcs.status log = Log("rabbitvcs.ui.commit") @@ -55,6 +56,10 @@ TOGGLE_ALL = False SHOW_UNVERSIONED = True + # This keeps track of any changes that the user has made to the row + # selections + changes = {} + def __init__(self, paths, base_dir=None, message=None): """ @@ -65,44 +70,13 @@ InterfaceView.__init__(self, "commit", "Commit") self.base_dir = base_dir - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() self.paths = [] for path in paths: if self.vcs.is_in_a_or_a_working_copy(path): self.paths.append(path) - self.files_table = rabbitvcs.ui.widget.Table( - self.get_widget("files_table"), - [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, - gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], - [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension"), - _("Text Status"), _("Property Status")], - filters=[{ - "callback": rabbitvcs.ui.widget.path_filter, - "user_data": { - "base_dir": base_dir, - "column": 1 - } - }], - callbacks={ - "row-activated": self.on_files_table_row_activated, - "mouse-event": self.on_files_table_mouse_event, - "key-event": self.on_files_table_key_event - } - ) - self.files_table.allow_multiple() - - self.message = rabbitvcs.ui.widget.TextView( - self.get_widget("message"), - (message and message or "") - ) - self.get_widget("to").set_text( - self.vcs.get_repo_url(self.base_dir) - ) - - self.items = None - self.initialize_items() # # Helper functions @@ -115,53 +89,41 @@ - Populates the files table with the retrieved items - Updates the status area """ - gtk.gdk.threads_enter() self.get_widget("status").set_text(_("Loading...")) gtk.gdk.threads_leave() - self.items = self.vcs.get_items(self.paths, self.vcs.STATUSES_FOR_COMMIT) + self.items = self.vcs.get_items(self.paths, self.vcs.statuses_for_commit(self.paths)) gtk.gdk.threads_enter() self.populate_files_table() self.get_widget("status").set_text(_("Found %d item(s)") % len(self.items)) gtk.gdk.threads_leave() - def reload_treeview(self): + # Overrides the GtkContextMenuCaller method + def on_context_menu_command_finished(self): self.initialize_items() - def reload_treeview_threaded(self): - self.load() - def should_item_be_activated(self, item): """ Determines if a file should be activated or not """ - if ((item.path in self.paths - or item.is_versioned) - and os.path.exists(item.path)): + + if (item.path in self.paths + or item.is_versioned() + and item.simple_content_status() != rabbitvcs.vcs.status.status_missing): return True return False - def populate_files_table(self): - """ - First clears and then populates the files table based on the items - retrieved in self.load() - - """ + def should_item_be_visible(self, item): + show_unversioned = self.SHOW_UNVERSIONED - self.files_table.clear() - for item in self.items: - checked = self.should_item_be_activated(item) - - self.files_table.append([ - checked, - item.path, - rabbitvcs.lib.helper.get_file_extension(item.path), - item.text_status, - item.prop_status - ]) + if not show_unversioned: + if not item.is_versioned(): + return False + + return True def initialize_items(self): """ @@ -180,10 +142,8 @@ def delete_items(self, widget, data=None): paths = self.files_table.get_selected_row_items(1) if len(paths) > 0: - from rabbitvcs.ui.delete import Delete - Delete(paths).start() - sleep(1) # sleep so the items can be fully deleted before init - self.initialize_items() + proc = rabbitvcs.util.helper.launch_ui_window("delete", paths) + self.rescan_after_process_exit(proc, paths) # # Event handlers @@ -195,6 +155,109 @@ def on_cancel_clicked(self, widget, data=None): self.close() + def on_key_pressed(self, widget, data): + if (data.state & (gtk.gdk.SHIFT_MASK | gtk.gdk.CONTROL_MASK) and + gtk.gdk.keyval_name(data.keyval) == "Return"): + self.on_ok_clicked(widget) + return True + + def on_toggle_show_all_toggled(self, widget, data=None): + self.TOGGLE_ALL = not self.TOGGLE_ALL + self.changes.clear() + for row in self.files_table.get_items(): + row[0] = self.TOGGLE_ALL + + def on_toggle_show_unversioned_toggled(self, widget, data=None): + self.SHOW_UNVERSIONED = not self.SHOW_UNVERSIONED + self.populate_files_table() + + def on_files_table_row_activated(self, treeview, event, col): + paths = self.files_table.get_selected_row_items(1) + rabbitvcs.util.helper.launch_diff_tool(*paths) + + def on_files_table_key_event(self, treeview, data=None): + if gtk.gdk.keyval_name(data.keyval) == "Delete": + self.delete_items(treeview, data) + + def on_files_table_mouse_event(self, treeview, data=None): + if data is not None and data.button == 3: + self.show_files_table_popup_menu(treeview, data) + + def on_previous_messages_clicked(self, widget, data=None): + dialog = rabbitvcs.ui.dialog.PreviousMessages() + message = dialog.run() + if message is not None: + self.message.set_text(message) + +class SVNCommit(Commit): + def __init__(self, paths, base_dir=None, message=None): + Commit.__init__(self, paths, base_dir, message) + + self.get_widget("commit_to_box").show() + + self.files_table = rabbitvcs.ui.widget.Table( + self.get_widget("files_table"), + [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, + gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], + [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension"), + _("Text Status"), _("Property Status")], + filters=[{ + "callback": rabbitvcs.ui.widget.path_filter, + "user_data": { + "base_dir": base_dir, + "column": 1 + } + }], + callbacks={ + "row-activated": self.on_files_table_row_activated, + "mouse-event": self.on_files_table_mouse_event, + "key-event": self.on_files_table_key_event, + "row-toggled": self.on_files_table_toggle_event + }, + flags={ + "sortable": True, + "sort_on": 1 + } + ) + self.files_table.allow_multiple() + + self.message = rabbitvcs.ui.widget.TextView( + self.get_widget("message"), + (message and message or "") + ) + self.get_widget("to").set_text( + self.vcs.svn().get_repo_url(self.base_dir) + ) + + self.items = None + if len(self.paths): + self.initialize_items() + + def populate_files_table(self): + """ + First clears and then populates the files table based on the items + retrieved in self.load() + + """ + + self.files_table.clear() + for item in self.items: + if item.path in self.changes: + checked = self.changes[item.path] + else: + checked = self.should_item_be_activated(item) + + if not self.should_item_be_visible(item): + continue + + self.files_table.append([ + checked, + item.path, + rabbitvcs.util.helper.get_file_extension(item.path), + item.simple_content_status(), + item.simple_metadata_status() + ]) + def on_ok_clicked(self, widget, data=None): items = self.files_table.get_activated_rows(1) self.hide() @@ -204,73 +267,163 @@ return added = 0 + recurse = False for item in items: + status = self.vcs.status(item, summarize=False).simple_content_status() try: - if self.vcs.status(item, recurse=False)[0].text_status == self.vcs.STATUS["unversioned"]: - self.vcs.add(item) + if status == rabbitvcs.vcs.status.status_unversioned: + self.vcs.svn().add(item) added += 1 + elif status == rabbitvcs.vcs.status.status_deleted: + recurse = True + elif status == rabbitvcs.vcs.status.status_missing: + self.vcs.svn().update(item) + self.vcs.svn().remove(item) except Exception, e: log.exception(e) ticks = added + len(items)*2 - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.vcs.svn(), register_gtk_quit=self.gtk_quit_is_set() ) self.action.set_pbar_ticks(ticks) self.action.append(self.action.set_header, _("Commit")) self.action.append(self.action.set_status, _("Running Commit Command...")) self.action.append( - rabbitvcs.lib.helper.save_log_message, + rabbitvcs.util.helper.save_log_message, self.message.get_text() ) - self.action.append(self.vcs.commit, items, self.message.get_text()) + self.action.append(self.vcs.svn().commit, items, self.message.get_text(), recurse=recurse) self.action.append(self.action.set_status, _("Completed Commit")) self.action.append(self.action.finish) self.action.start() + + def on_files_table_toggle_event(self, row, col): + # Adds path: True/False to the dict + self.changes[row[1]] = row[col] + +class GitCommit(Commit): + def __init__(self, paths, base_dir=None, message=None): + Commit.__init__(self, paths, base_dir, message) + + self.git = self.vcs.git(paths[0]) + + self.files_table = rabbitvcs.ui.widget.Table( + self.get_widget("files_table"), + [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, + gobject.TYPE_STRING, gobject.TYPE_STRING], + [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension"), + _("Status")], + filters=[{ + "callback": rabbitvcs.ui.widget.path_filter, + "user_data": { + "base_dir": base_dir, + "column": 1 + } + }], + callbacks={ + "row-activated": self.on_files_table_row_activated, + "mouse-event": self.on_files_table_mouse_event, + "key-event": self.on_files_table_key_event, + "row-toggled": self.on_files_table_toggle_event + }, + flags={ + "sortable": True, + "sort_on": 1 + } + ) + self.files_table.allow_multiple() - def on_key_pressed(self, widget, data): - if (data.state & (gtk.gdk.SHIFT_MASK | gtk.gdk.CONTROL_MASK) and - gtk.gdk.keyval_name(data.keyval) == "Return"): - self.on_ok_clicked(widget) - return True - - def on_toggle_show_all_toggled(self, widget, data=None): - self.TOGGLE_ALL = not self.TOGGLE_ALL - for row in self.files_table.get_items(): - row[0] = self.TOGGLE_ALL - - def on_toggle_show_unversioned_toggled(self, widget, data=None): - self.SHOW_UNVERSIONED = not self.SHOW_UNVERSIONED + self.message = rabbitvcs.ui.widget.TextView( + self.get_widget("message"), + (message and message or "") + ) - if self.SHOW_UNVERSIONED: - self.populate_files_table() - else: - index = 0 - for row in self.files_table.get_items(): - if not self.vcs.is_versioned(row[1]): - self.files_table.remove(index) - index -= 1 - index += 1 + self.items = None + if len(self.paths): + self.initialize_items() - def on_files_table_row_activated(self, treeview, event, col): - paths = self.files_table.get_selected_row_items(1) - rabbitvcs.lib.helper.launch_diff_tool(*paths) + def populate_files_table(self): + """ + First clears and then populates the files table based on the items + retrieved in self.load() + + """ + + self.files_table.clear() + for item in self.items: + if item.path in self.changes: + checked = self.changes[item.path] + else: + checked = self.should_item_be_activated(item) - def on_files_table_key_event(self, treeview, data=None): - if gtk.gdk.keyval_name(data.keyval) == "Delete": - self.delete_items(treeview, data) + if not self.should_item_be_visible(item): + continue - def on_files_table_mouse_event(self, treeview, data=None): - if data is not None and data.button == 3: - self.show_files_table_popup_menu(treeview, data) + self.files_table.append([ + checked, + item.path, + rabbitvcs.util.helper.get_file_extension(item.path), + item.simple_content_status() + ]) - def on_previous_messages_clicked(self, widget, data=None): - dialog = rabbitvcs.ui.dialog.PreviousMessages() - message = dialog.run() - if message is not None: - self.message.set_text(message) + def on_ok_clicked(self, widget, data=None): + items = self.files_table.get_activated_rows(1) + self.hide() + + if len(items) == 0: + self.close() + return + + staged = 0 + for item in items: + try: + status = self.vcs.status(item, summarize=False).simple_content_status() + if status == rabbitvcs.vcs.status.status_missing: + self.git.checkout([item]) + self.git.remove(item) + else: + self.git.stage(item) + staged += 1 + except Exception, e: + log.exception(e) + + ticks = staged + len(items)*2 + + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + self.action.set_pbar_ticks(ticks) + self.action.append(self.action.set_header, _("Commit")) + self.action.append(self.action.set_status, _("Running Commit Command...")) + self.action.append( + rabbitvcs.util.helper.save_log_message, + self.message.get_text() + ) + self.action.append( + self.git.commit, + self.message.get_text() + ) + self.action.append(self.action.set_status, _("Completed Commit")) + self.action.append(self.action.finish) + self.action.start() + + def on_files_table_toggle_event(self, row, col): + # Adds path: True/False to the dict + self.changes[row[1]] = row[col] + + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNCommit, + rabbitvcs.vcs.VCS_GIT: GitCommit +} + +def commit_factory(paths, base_dir=None, message=None): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths, base_dir, message) if __name__ == "__main__": from rabbitvcs.ui import main, BASEDIR_OPT @@ -279,6 +432,6 @@ usage="Usage: rabbitvcs commit [path1] [path2] ..." ) - window = Commit(paths, options.base_dir, message=options.message) + window = commit_factory(paths, options.base_dir, message=options.message) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/createpatch.py rabbitvcs-0.15.0.5/rabbitvcs/ui/createpatch.py --- rabbitvcs-0.13.1/rabbitvcs/ui/createpatch.py 2010-02-26 20:37:10.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/createpatch.py 2011-11-04 16:33:31.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ import os import thread -import gnomevfs import pygtk import gobject import gtk @@ -32,14 +31,14 @@ import shutil from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.action import SVNAction, GitAction import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib -import rabbitvcs.lib.helper -from rabbitvcs.lib.helper import get_common_directory -from rabbitvcs.lib.log import Log -from rabbitvcs.ui.commit import Commit +import rabbitvcs.util +import rabbitvcs.util.helper +from rabbitvcs.util.helper import get_common_directory +from rabbitvcs.util.log import Log +from rabbitvcs.ui.commit import SVNCommit, GitCommit log = Log("rabbitvcs.ui.createpatch") @@ -48,7 +47,7 @@ gtk.gdk.threads_init() -class CreatePatch(Commit): +class CreatePatch: """ Provides a user interface for the user to create a Patch file @@ -72,11 +71,43 @@ self.paths = paths self.base_dir = base_dir - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - self.common = rabbitvcs.lib.helper.get_common_directory(paths) + self.vcs = rabbitvcs.vcs.VCS() self.activated_cache = {} - if not self.vcs.get_versioned_path(self.common): + # + # Helper functions + # + + def choose_patch_path(self): + path = "" + + dialog = gtk.FileChooserDialog( + _("Create Patch"), + None, + gtk.FILE_CHOOSER_ACTION_SAVE,(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, + gtk.STOCK_SAVE, gtk.RESPONSE_OK)) + dialog.set_do_overwrite_confirmation(True) + dialog.set_default_response(gtk.RESPONSE_OK) + dialog.set_current_folder_uri( + get_common_directory(self.paths).replace("file://", "") + ) + response = dialog.run() + + if response == gtk.RESPONSE_OK: + path = dialog.get_filename() + + dialog.destroy() + + return path + +class SVNCreatePatch(CreatePatch, SVNCommit): + def __init__(self, paths, base_dir=None): + CreatePatch.__init__(self, paths, base_dir) + + self.svn = self.vcs.svn() + self.common = rabbitvcs.util.helper.get_common_directory(paths) + + if not self.svn.get_versioned_path(self.common): rabbitvcs.ui.dialog.MessageBox(_("The given path is not a working copy")) raise SystemExit() @@ -105,30 +136,104 @@ self.initialize_items() # - # Helper functions - # - - def choose_patch_path(self): - path = "" + # Event handlers + # - dialog = gtk.FileChooserDialog( - _("Create Patch"), - None, - gtk.FILE_CHOOSER_ACTION_SAVE,(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, - gtk.STOCK_SAVE, gtk.RESPONSE_OK)) - dialog.set_do_overwrite_confirmation(True) - dialog.set_default_response(gtk.RESPONSE_OK) - dialog.set_current_folder_uri( - gnomevfs.get_uri_from_local_path(get_common_directory(self.paths)) + def on_ok_clicked(self, widget, data=None): + items = self.files_table.get_activated_rows(1) + self.hide() + + if len(items) == 0: + self.close() + return + + path = self.choose_patch_path() + if not path: + self.close() + return + + ticks = len(items)*2 + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, + register_gtk_quit=self.gtk_quit_is_set() ) - response = dialog.run() + self.action.set_pbar_ticks(ticks) + self.action.append(self.action.set_header, _("Create Patch")) + self.action.append(self.action.set_status, _("Creating Patch File...")) - if response == gtk.RESPONSE_OK: - path = dialog.get_filename() + def create_patch_action(patch_path, patch_items, base_dir): + fileObj = open(patch_path,"w") - dialog.destroy() + # PySVN takes a path to create its own temp files... + temp_dir = tempfile.mkdtemp(prefix=rabbitvcs.TEMP_DIR_PREFIX) + + os.chdir(base_dir) + + # Add to the Patch file only the selected items + for item in patch_items: + rel_path = rabbitvcs.util.helper.get_relative_path(base_dir, item) + diff_text = self.svn.diff( + temp_dir, + rel_path, + self.svn.revision("base"), + rel_path, + self.svn.revision("working") + ) + fileObj.write(diff_text) + + fileObj.close() - return path + # Note: if we don't want to ignore errors here, we could define a + # function that logs failures. + shutil.rmtree(temp_dir, ignore_errors = True) + + self.action.append(create_patch_action, path, items, self.common) + + self.action.append(self.action.set_status, _("Patch File Created")) + self.action.append(self.action.finish) + self.action.start() + + # TODO: Open the diff file (meld is going to add support in a future version :() + # rabbitvcs.util.helper.launch_diff_tool(path) + +class GitCreatePatch(CreatePatch, GitCommit): + def __init__(self, paths, base_dir=None): + CreatePatch.__init__(self, paths, base_dir) + + self.git = self.vcs.git(paths[0]) + self.common = rabbitvcs.util.helper.get_common_directory(paths) + + if not self.vcs.is_versioned(self.common): + rabbitvcs.ui.dialog.MessageBox(_("The given path is not a working copy")) + raise SystemExit() + + self.files_table = rabbitvcs.ui.widget.Table( + self.get_widget("files_table"), + [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, + gobject.TYPE_STRING, gobject.TYPE_STRING], + [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension"), + _("Status")], + filters=[{ + "callback": rabbitvcs.ui.widget.path_filter, + "user_data": { + "base_dir": base_dir, + "column": 1 + } + }], + callbacks={ + "row-activated": self.on_files_table_row_activated, + "mouse-event": self.on_files_table_mouse_event, + "key-event": self.on_files_table_key_event + }, + flags={ + "sortable": True, + "sort_on": 1 + } + ) + self.files_table.allow_multiple() + + self.items = None + self.initialize_items() # # Event handlers @@ -148,8 +253,8 @@ return ticks = len(items)*2 - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.GitAction( + self.git, register_gtk_quit=self.gtk_quit_is_set() ) self.action.set_pbar_ticks(ticks) @@ -166,13 +271,12 @@ # Add to the Patch file only the selected items for item in patch_items: - rel_path = rabbitvcs.lib.helper.get_relative_path(base_dir, item) - diff_text = self.vcs.diff( - temp_dir, + rel_path = rabbitvcs.util.helper.get_relative_path(base_dir, item) + diff_text = self.git.diff( rel_path, - self.vcs.revision("base"), + self.git.revision("HEAD"), rel_path, - self.vcs.revision("working") + self.git.revision("WORKING") ) fileObj.write(diff_text) @@ -187,9 +291,15 @@ self.action.append(self.action.set_status, _("Patch File Created")) self.action.append(self.action.finish) self.action.start() - - # TODO: Open the diff file (meld is going to add support in a future version :() - # rabbitvcs.lib.helper.launch_diff_tool(path) + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNCreatePatch, + rabbitvcs.vcs.VCS_GIT: GitCreatePatch +} + +def createpatch_factory(paths, base_dir): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths, base_dir) if __name__ == "__main__": from rabbitvcs.ui import main, BASEDIR_OPT @@ -198,6 +308,6 @@ usage="Usage: rabbitvcs createpatch [path1] [path2] ..." ) - window = CreatePatch(paths, options.base_dir) + window = createpatch_factory(paths, options.base_dir) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/create.py rabbitvcs-0.15.0.5/rabbitvcs/ui/create.py --- rabbitvcs-0.13.1/rabbitvcs/ui/create.py 2009-09-28 11:25:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/create.py 2010-12-19 14:00:23.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,19 +23,21 @@ import os import subprocess +import pygtk +import gobject +import gtk + import rabbitvcs.ui.dialog +from rabbitvcs.ui.action import GitAction from rabbitvcs import gettext _ = gettext.gettext -class Create: +class SVNCreate: """ - Provides an interface to create a vcs repository + Provides an interface to create a svn repository """ - # TODO: This class in massively Subversion-biased. In the future, we'll - # need to refactor to make it platform-agnostic - # Also, might want to just launch a terminal window instead of this def __init__(self, path): @@ -50,14 +52,36 @@ else: rabbitvcs.ui.dialog.MessageBox(_("There was an error creating the repository. Make sure the given folder is empty.")) +class GitCreate: + # Also, might want to just launch a terminal window instead of this + def __init__(self, path): + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git() + self.path = path + + self.action = GitAction( + self.git, + register_gtk_quit=True + ) + + self.action.append(self.action.set_header, _("Initialize Repository")) + self.action.append(self.action.set_status, _("Setting up repository...")) + self.action.append(self.git.initialize_repository, self.path) + self.action.append(self.action.set_status, _("Completed repository setup")) + self.action.append(self.action.finish) + self.action.start() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNCreate, + rabbitvcs.vcs.VCS_GIT: GitCreate +} + if __name__ == "__main__": - from os import getcwd - from sys import argv - - args = argv[1:] - path = getcwd() - if args: - if args[0] != ".": - path = args[0] - - Create(path) + from rabbitvcs.ui import main, VCS_OPT, VCS_OPT_ERROR + (options, paths) = main([VCS_OPT], usage="Usage: rabbitvcs create --vcs [svn|git] path") + if options.vcs: + window = classes_map[options.vcs](paths[0]) + if options.vcs == rabbitvcs.vcs.VCS_GIT: + gtk.main() + else: + rabbitvcs.ui.dialog.MessageBox(VCS_OPT_ERROR) diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/delete.py rabbitvcs-0.15.0.5/rabbitvcs/ui/delete.py --- rabbitvcs-0.13.1/rabbitvcs/ui/delete.py 2010-03-26 14:40:40.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/delete.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,9 +27,9 @@ import gtk from rabbitvcs.ui import InterfaceNonView -from rabbitvcs.ui.action import VCSAction -import rabbitvcs.lib.vcs -from rabbitvcs.lib.log import Log +from rabbitvcs.ui.action import SVNAction +import rabbitvcs.vcs +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.delete") @@ -45,7 +45,7 @@ def __init__(self, paths): InterfaceNonView.__init__(self) self.paths = paths - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() def start(self): @@ -73,19 +73,44 @@ if result == gtk.RESPONSE_OK or result == True: if versioned: try: - self.vcs.remove(versioned, force=True) + self.vcs_remove(versioned, force=True) except Exception, e: log.exception() return if unversioned: for path in unversioned: - rabbitvcs.lib.helper.delete_item(path) - + rabbitvcs.util.helper.delete_item(path) + +class SVNDelete(Delete): + def __init__(self, paths): + Delete.__init__(self, paths) + + def vcs_remove(self, paths, **kwargs): + if rabbitvcs.vcs.guess(paths[0])["vcs"] == rabbitvcs.vcs.VCS_SVN: + self.vcs.svn().remove(paths, **kwargs) + +class GitDelete(Delete): + def __init__(self, paths): + Delete.__init__(self, paths) + + def vcs_remove(self, paths, **kwargs): + if rabbitvcs.vcs.guess(paths[0])["vcs"] == rabbitvcs.vcs.VCS_GIT: + self.vcs.git(paths[0]).remove(paths) + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNDelete, + rabbitvcs.vcs.VCS_GIT: GitDelete +} + +def delete_factory(paths): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths) + if __name__ == "__main__": from rabbitvcs.ui import main (options, paths) = main(usage="Usage: rabbitvcs delete [path1] [path2] ...") - window = Delete(paths) + window = delete_factory(paths) window.register_gtk_quit() window.start() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/dialog.py rabbitvcs-0.15.0.5/rabbitvcs/ui/dialog.py --- rabbitvcs-0.13.1/rabbitvcs/ui/dialog.py 2010-03-14 06:57:53.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/dialog.py 2011-10-20 14:40:14.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -31,9 +31,7 @@ from rabbitvcs.ui import InterfaceView import rabbitvcs.ui.widget import rabbitvcs.ui.wraplabel -import rabbitvcs.lib.helper - -GLADE = 'dialogs' +import rabbitvcs.util.helper ERROR_NOTICE = _("""\ An error has occurred in the RabbitVCS Nautilus extension. Please contact the \ @@ -42,7 +40,7 @@ class PreviousMessages(InterfaceView): def __init__(self): - InterfaceView.__init__(self, GLADE, "PreviousMessages") + InterfaceView.__init__(self, "dialogs/previous_messages", "PreviousMessages") self.message = rabbitvcs.ui.widget.TextView( self.get_widget("prevmes_message") @@ -51,18 +49,25 @@ self.message_table = rabbitvcs.ui.widget.Table( self.get_widget("prevmes_table"), [gobject.TYPE_STRING, gobject.TYPE_STRING], - [_("Date"), _("Message")] + [_("Date"), _("Message")], + filters=[{ + "callback": rabbitvcs.ui.widget.long_text_filter, + "user_data": { + "column": 1, + "cols": 80 + } + }], + callbacks={ + "cursor-changed": self.on_prevmes_table_cursor_changed, + "row-activated": self.on_prevmes_table_row_activated + } ) - self.entries = rabbitvcs.lib.helper.get_previous_messages() + self.entries = rabbitvcs.util.helper.get_previous_messages() if self.entries is None: return None for entry in self.entries: - tmp = entry[1] - - tmp = rabbitvcs.lib.helper.format_long_text(tmp, 80) - - self.message_table.append([entry[0],tmp]) + self.message_table.append([entry[0],entry[1]]) if len(self.entries) > 0: self.message.set_text(self.entries[0][1]) @@ -81,14 +86,20 @@ self.dialog.destroy() return returner + + def on_prevmes_table_row_activated(self, treeview, data, col): + self.update_message_table() + self.dialog.response(gtk.RESPONSE_OK) + + def on_prevmes_table_cursor_changed(self, treeview): + self.update_message_table() - def on_prevmes_table_button_pressed(self, treeview, event): - pathinfo = treeview.get_path_at_pos(int(event.x), int(event.y)) - if pathinfo is not None: - path, col, cellx, celly = pathinfo - treeview.grab_focus() - treeview.set_cursor(path, col, 0) - self.message.set_text(self.entries[path[0]][1]) + def update_message_table(self): + selection = self.message_table.get_selected_row_items(1) + + if selection: + selected_message = selection[-1] + self.message.set_text(selected_message) class FolderChooser: def __init__(self): @@ -117,7 +128,7 @@ def __init__(self, realm="", host="", issuer="", valid_from="", valid_until="", fingerprint=""): - InterfaceView.__init__(self, GLADE, "Certificate") + InterfaceView.__init__(self, "dialogs/certificate", "Certificate") self.get_widget("cert_realm").set_label(realm) self.get_widget("cert_host").set_label(host) @@ -145,7 +156,7 @@ class Authentication(InterfaceView): def __init__(self, realm="", may_save=True): - InterfaceView.__init__(self, GLADE, "Authentication") + InterfaceView.__init__(self, "dialogs/authentication", "Authentication") self.get_widget("auth_realm").set_label(realm) self.get_widget("auth_save").set_sensitive(may_save) @@ -167,7 +178,7 @@ class CertAuthentication(InterfaceView): def __init__(self, realm="", may_save=True): - InterfaceView.__init__(self, GLADE, "CertAuthentication") + InterfaceView.__init__(self, "dialogs/cert_authentication", "CertAuthentication") self.get_widget("certauth_realm").set_label(realm) self.get_widget("certauth_save").set_sensitive(may_save) @@ -187,7 +198,7 @@ class SSLClientCertPrompt(InterfaceView): def __init__(self, realm="", may_save=True): - InterfaceView.__init__(self, GLADE, "SSLClientCertPrompt") + InterfaceView.__init__(self, "dialogs/ssl_client_cert_prompt", "SSLClientCertPrompt") self.get_widget("sslclientcert_realm").set_label(realm) self.get_widget("sslclientcert_save").set_sensitive(may_save) @@ -213,7 +224,7 @@ class Property(InterfaceView): def __init__(self, name="", value="", recurse=True): - InterfaceView.__init__(self, GLADE, "Property") + InterfaceView.__init__(self, "dialogs/property", "Property") self.save_name = name self.save_value = value @@ -284,7 +295,7 @@ class Confirmation(InterfaceView): def __init__(self, message=_("Are you sure you want to continue?")): - InterfaceView.__init__(self, GLADE, "Confirmation") + InterfaceView.__init__(self, "dialogs/confirmation", "Confirmation") self.get_widget("confirm_message").set_text(message) def run(self): @@ -297,7 +308,7 @@ class MessageBox(InterfaceView): def __init__(self, message): - InterfaceView.__init__(self, GLADE, "MessageBox") + InterfaceView.__init__(self, "dialogs/message_box", "MessageBox") self.get_widget("messagebox_message").set_text(message) dialog = self.get_widget("MessageBox") @@ -306,7 +317,7 @@ class DeleteConfirmation(InterfaceView): def __init__(self, path=None): - InterfaceView.__init__(self, GLADE, "DeleteConfirmation") + InterfaceView.__init__(self, "dialogs/delete_confirmation", "DeleteConfirmation") if path: path = "\"%s\"" % os.path.basename(path) @@ -326,7 +337,7 @@ class TextChange(InterfaceView): def __init__(self, title=None, message=""): - InterfaceView.__init__(self, GLADE, "TextChange") + InterfaceView.__init__(self, "dialogs/text_change", "TextChange") if title: self.get_widget("TextChange").set_title(title) @@ -345,7 +356,7 @@ class OneLineTextChange(InterfaceView): def __init__(self, title=None, label=None, current_text=None): - InterfaceView.__init__(self, GLADE, "OneLineTextChange") + InterfaceView.__init__(self, "dialogs/one_line_text_change", "OneLineTextChange") if title: self.get_widget("OneLineTextChange").set_title(title) @@ -357,18 +368,27 @@ if current_text: self.new_text.set_text(current_text) - + + self.dialog = self.get_widget("OneLineTextChange") + + def on_key_release_event(self, widget, data): + # The gtk.Dialog.response() method emits the "response" signal, + # which tells gtk.Dialog.run() asyncronously to stop. This allows the + # user to press the "Return" button when done writing in the new text + if gtk.gdk.keyval_name(data.keyval) == "Return": + self.dialog.response(gtk.RESPONSE_OK) + def run(self): - dialog = self.get_widget("OneLineTextChange") - result = dialog.run() - - dialog.destroy() + result = self.dialog.run() + new_text = self.new_text.get_text() + + self.dialog.destroy() - return (result, self.new_text.get_text()) + return (result, new_text) class NewFolder(InterfaceView): def __init__(self): - InterfaceView.__init__(self, GLADE, "CreateFolder") + InterfaceView.__init__(self, "dialogs/create_folder", "CreateFolder") self.folder_name = self.get_widget("folder_name") self.textview = rabbitvcs.ui.widget.TextView( @@ -395,7 +415,7 @@ class ErrorNotification(InterfaceView): def __init__(self, text): - InterfaceView.__init__(self, GLADE, "ErrorNotification") + InterfaceView.__init__(self, "dialogs/error_notification", "ErrorNotification") notice = rabbitvcs.ui.wraplabel.WrapLabel(ERROR_NOTICE) notice.set_use_markup(True) @@ -414,3 +434,84 @@ dialog = self.get_widget("ErrorNotification") dialog.run() dialog.destroy() + +class NameEmailPrompt(InterfaceView): + def __init__(self): + InterfaceView.__init__(self, "dialogs/name_email_prompt", "NameEmailPrompt") + + self.dialog = self.get_widget("NameEmailPrompt") + + def on_key_release_event(self, widget, data): + # The gtk.Dialog.response() method emits the "response" signal, + # which tells gtk.Dialog.run() asyncronously to stop. This allows the + # user to press the "Return" button when done writing in the new text + if gtk.gdk.keyval_name(data.keyval) == "Return": + self.dialog.response(gtk.RESPONSE_OK) + + def run(self): + result = self.dialog.run() + name = self.get_widget("name").get_text() + email = self.get_widget("email").get_text() + self.dialog.destroy() + + if result == gtk.RESPONSE_OK: + return (name, email) + else: + return (None, None) + +class ConflictDecision(InterfaceView): + """ + Provides a dialog to make conflict decisions with. User can accept mine, + accept theirs, or merge manually. + + """ + + def __init__(self, filename=""): + + InterfaceView.__init__(self, "dialogs/conflict_decision", "ConflictDecision") + self.get_widget("filename").set_text(filename) + + def run(self): + """ + Returns a tuple with two elements. + + The first has three possible values about how to resolve the conflict. + + - -1 Cancel + - 0 Accept Mine + - 1 Accept Theirs + - 2 Merge Manually + + The second is whether to mark the conflict as resolved after the action + + """ + + self.dialog = self.get_widget("ConflictDecision") + result = self.dialog.run() + mark_resolved = self.get_widget("mark_resolved").get_active() + self.dialog.destroy() + return (result, mark_resolved) + +class Loading(InterfaceView): + def __init__(self): + InterfaceView.__init__(self, "dialogs/loading", "Loading") + + self.get_widget("loading_cancel").set_sensitive(False) + + self.pbar = rabbitvcs.ui.widget.ProgressBar( + self.get_widget("pbar") + ) + self.pbar.start_pulsate() + + def on_destroy(self, widget): + self.close() + + def on_loading_cancel_clicked(self, widget): + self.close() + + def run(self): + self.dialog = self.get_widget("Loading") + self.dialog.run() + + def destroy(self): + self.dialog.destroy() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/diff.py rabbitvcs-0.15.0.5/rabbitvcs/ui/diff.py --- rabbitvcs-0.13.1/rabbitvcs/ui/diff.py 2010-03-25 20:05:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/diff.py 2011-10-21 17:07:55.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,6 +20,8 @@ # along with RabbitVCS; If not, see . # +import thread + import pygtk import gobject import gtk @@ -29,30 +31,75 @@ from rabbitvcs import TEMP_DIR_PREFIX from rabbitvcs.ui import InterfaceNonView -from rabbitvcs.lib.vcs import create_vcs_instance -from rabbitvcs.ui.action import VCSAction -import rabbitvcs.lib.helper +import rabbitvcs.vcs +from rabbitvcs.ui.action import SVNAction, GitAction +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log + +log = Log("rabbitvcs.ui.diff") from rabbitvcs import gettext _ = gettext.gettext +gtk.gdk.threads_init() + class Diff(InterfaceNonView): def __init__(self, path1, revision1=None, path2=None, revision2=None, sidebyside=False): InterfaceNonView.__init__(self) - - self.vcs = create_vcs_instance() + + self.vcs = rabbitvcs.vcs.VCS() self.path1 = path1 self.path2 = path2 self.sidebyside = sidebyside - self.revision1 = self.get_revision_object(revision1, "base") - self.revision2 = self.get_revision_object(revision2, "working") self.temp_dir = tempfile.mkdtemp(prefix=TEMP_DIR_PREFIX) if path2 is None: self.path2 = path1 + + def launch(self): + if self.sidebyside: + self.launch_sidebyside_diff() + else: + self.launch_unified_diff() + + self.stop_loading() + + def _build_export_path(self, index, revision, path): + dest = rabbitvcs.util.helper.get_tmp_path("rabbitvcs-%s-%s-%s" % (str(index), str(revision)[:5], os.path.basename(path))) + if os.path.exists(dest): + if os.path.isdir(dest): + rmtree(dest, ignore_errors=True) + else: + os.remove(dest) + + return dest + + def start_loading(self): + self.dialog = rabbitvcs.ui.dialog.Loading() + self.dialog.run() + + def stop_loading(self): + self.dialog.close() + +class SVNDiff(Diff): + def __init__(self, path1, revision1=None, path2=None, revision2=None, + sidebyside=False): + Diff.__init__(self, path1, revision1, path2, revision2, sidebyside) + + self.svn = self.vcs.svn() + + self.revision1 = self.get_revision_object(revision1, "base") + self.revision2 = self.get_revision_object(revision2, "working") + + try: + thread.start_new_thread(self.launch, ()) + except Exception, e: + log.exception(e) + + self.start_loading() def get_revision_object(self, value, default): # If value is a rabbitvcs Revision object, return it @@ -61,50 +108,44 @@ # If value is None, use the default if value is None: - return self.vcs.revision(default) + return self.svn.revision(default) # If the value is an integer number, return a numerical revision object # otherwise, a string revision value has been passed, use that as "kind" try: value = int(value) - return self.vcs.revision("number", value) + return self.svn.revision("number", value) except ValueError: # triggered when passed a string - return self.vcs.revision(value) - - def launch(self): - if self.sidebyside: - self.launch_sidebyside_diff() - else: - self.launch_unified_diff() - + return self.svn.revision(value) + def launch_unified_diff(self): """ Launch diff as a unified diff in a text editor or .diff viewer """ - action = VCSAction( - self.vcs, + action = SVNAction( + self.svn, notification=False, run_in_thread=False ) diff_text = action.run_single( - self.vcs.diff, + self.svn.diff, self.temp_dir, self.path1, self.revision1, self.path2, self.revision2 ) - - action.stop_loader() + if diff_text is None: + diff_text = "" fh = tempfile.mkstemp("-rabbitvcs-" + str(self.revision1) + "-" + str(self.revision2) + ".diff") os.write(fh[0], diff_text) os.close(fh[0]) - rabbitvcs.lib.helper.open_item(fh[1]) + rabbitvcs.util.helper.open_item(fh[1]) def launch_sidebyside_diff(self): """ @@ -112,70 +153,170 @@ """ - action = VCSAction( - self.vcs, + action = SVNAction( + self.svn, notification=False, run_in_thread=False ) - if os.path.exists(self.path1) and self.revision1.kind != "base": + if self.revision1.kind == "working": dest1 = self.path1 else: dest1 = self._build_export_path(1, self.revision1, self.path1) action.run_single( - self.vcs.export, + self.svn.export, self.path1, dest1, self.revision1 ) + action.stop_loader() - if os.path.exists(self.path2) and self.revision2.kind != "base": + if self.revision2.kind == "working": dest2 = self.path2 else: dest2 = self._build_export_path(2, self.revision2, self.path2) action.run_single( - self.vcs.export, + self.svn.export, self.path2, dest2, self.revision2 ) - - action.stop_loader() + action.stop_loader() - rabbitvcs.lib.helper.launch_diff_tool(dest1, dest2) - - def _build_export_path(self, index, revision, path): - dest = "/tmp/rabbitvcs-%s-%s-%s" % (str(index), str(revision), os.path.basename(path)) - if os.path.exists(dest): - if os.path.isdir(dest): - rmtree(dest, ignore_errors=True) - else: - os.remove(dest) - - return dest + rabbitvcs.util.helper.launch_diff_tool(dest1, dest2) -class SVNDiff(Diff): +class GitDiff(Diff): def __init__(self, path1, revision1=None, path2=None, revision2=None, sidebyside=False): Diff.__init__(self, path1, revision1, path2, revision2, sidebyside) - self.launch() + self.git = self.vcs.git(path1) + + self.revision1 = self.get_revision_object(revision1, "HEAD") + self.revision2 = self.get_revision_object(revision2, "WORKING") + + try: + thread.start_new_thread(self.launch, ()) + except Exception, e: + log.exception(e) + + self.start_loading() + + def get_revision_object(self, value, default): + # If value is a rabbitvcs Revision object, return it + if hasattr(value, "is_revision_object"): + return value + + value_to_pass = value + if not value_to_pass: + value_to_pass = default + + # triggered when passed a string + return self.git.revision(value_to_pass) + + def save_diff_to_file(self, path, data): + dirname = os.path.dirname(path) + if not os.path.isdir(dirname): + os.makedirs(dirname) + + if not data: + data = "" + + file = open(path, "wb") + try: + file.write(data) + except Exception, e: + log.exception(e) + finally: + file.close() + + def launch_unified_diff(self): + """ + Launch diff as a unified diff in a text editor or .diff viewer + + """ + + action = GitAction( + self.git, + notification=False, + run_in_thread=False + ) + + diff_text = action.run_single( + self.git.diff, + self.path1, + self.revision1, + self.path2, + self.revision2 + ) + if diff_text is None: + diff_text = "" + + fh = tempfile.mkstemp("-rabbitvcs-" + str(self.revision1)[:5] + "-" + str(self.revision2)[:5] + ".diff") + os.write(fh[0], diff_text) + os.close(fh[0]) + rabbitvcs.util.helper.open_item(fh[1]) + + def launch_sidebyside_diff(self): + """ + Launch diff as a side-by-side comparison using our comparison tool + + """ + + action = GitAction( + self.git, + notification=False, + run_in_thread=False + ) + + if self.revision1.kind != "WORKING": + dest1 = self._build_export_path(1, self.revision1, self.path1) + self.save_diff_to_file(dest1, action.run_single( + self.git.show, + self.path1, + self.revision1 + )) + else: + dest1 = self.path1 + + if self.revision2.kind != "WORKING": + dest2 = self._build_export_path(2, self.revision2, self.path2) + self.save_diff_to_file(dest2, action.run_single( + self.git.show, + self.path2, + self.revision2 + )) + else: + dest2 = self.path2 + + rabbitvcs.util.helper.launch_diff_tool(dest1, dest2) + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNDiff, + rabbitvcs.vcs.VCS_GIT: GitDiff +} + +def diff_factory(vcs, path1, revision_obj1, path2=None, revision_obj2=None, sidebyside=False): + if not vcs: + guess = rabbitvcs.vcs.guess(path1) + vcs = guess["vcs"] + + return classes_map[vcs](path1, revision_obj1, path2, revision_obj2, sidebyside) if __name__ == "__main__": - from rabbitvcs.ui import main + from rabbitvcs.ui import main, VCS_OPT (options, args) = main([ (["-s", "--sidebyside"], { "help": _("View diff as side-by-side comparison"), "action": "store_true", "default": False - })], + }), VCS_OPT], usage="Usage: rabbitvcs diff [url1@rev1] [url2@rev2]" ) - pathrev1 = rabbitvcs.lib.helper.parse_path_revision_string(args.pop(0)) + pathrev1 = rabbitvcs.util.helper.parse_path_revision_string(args.pop(0)) pathrev2 = (None, None) if len(args) > 0: - pathrev2 = rabbitvcs.lib.helper.parse_path_revision_string(args.pop(0)) + pathrev2 = rabbitvcs.util.helper.parse_path_revision_string(args.pop(0)) - SVNDiff(pathrev1[0], pathrev1[1], pathrev2[0], pathrev2[1], sidebyside=options.sidebyside) - gtk.main() + diff_factory(options.vcs, pathrev1[0], pathrev1[1], pathrev2[0], pathrev2[1], sidebyside=options.sidebyside) diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/editconflicts.py rabbitvcs-0.15.0.5/rabbitvcs/ui/editconflicts.py --- rabbitvcs-0.13.1/rabbitvcs/ui/editconflicts.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/editconflicts.py 2011-10-21 17:07:55.000000000 +0000 @@ -0,0 +1,155 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os +import os.path +import thread +import shutil + +import pygtk +import gobject +import gtk + +from rabbitvcs.ui import InterfaceNonView +from rabbitvcs.ui.action import SVNAction, GitAction +import rabbitvcs.ui.widget +import rabbitvcs.ui.dialog +import rabbitvcs.ui.action +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log + +log = Log("rabbitvcs.ui.editconflicts") + +from rabbitvcs import gettext +_ = gettext.gettext + +class SVNEditConflicts(InterfaceNonView): + def __init__(self, path): + InterfaceNonView.__init__(self) + + self.path = path + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() + + status = self.svn.status(self.path) + if status.simple_content_status() != rabbitvcs.vcs.status.status_complicated: + log.debug("The specified file is not conflicted. There is nothing to do.") + self.close() + return + + filename = os.path.basename(path) + + dialog = rabbitvcs.ui.dialog.ConflictDecision(filename) + (action, mark_resolved) = dialog.run() + dialog.destroy() + + if action == -1: + #Cancel + pass + + elif action == 0: + #Accept Mine + working = self.get_working_path(path) + shutil.copyfile(working, path) + + if mark_resolved: + self.svn.resolve(path) + + elif action == 1: + #Accept Theirs + head = self.get_head_path(path) + shutil.copyfile(head, path) + + if mark_resolved: + self.svn.resolve(path) + + elif action == 2: + #Merge Manually + + head = self.get_head_path(path) + working = self.get_working_path(path) + shutil.copyfile(working, path) + + rabbitvcs.util.helper.launch_merge_tool(path, head) + + if mark_resolved: + self.svn.resolve(path) + + self.close() + + def get_working_path(self, path): + paths = [ + "%s.mine" % path, + "%s.working" % path + ] + + for working in paths: + if os.path.exists(working): + return working + + return path + + def get_head_path(self, path): + # There might be a merge-right file if merging from a different branch + paths = os.listdir(os.path.dirname(path)) + for head in paths: + if head.find(os.path.basename(path)) != -1 and head.find("merge-right") != -1: + return head + + # If no merge-right file exists, merging is coming from head + # so export the file from head + tmppath = rabbitvcs.util.helper.get_tmp_path("%s.head" % os.path.basename(path)) + self.svn.export(path, tmppath) + + return tmppath + +class GitEditConflicts(InterfaceNonView): + def __init__(self, path): + InterfaceNonView.__init__(self) + + self.path = path + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) + + rabbitvcs.util.helper.launch_merge_tool(self.path) + + self.close() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNEditConflicts, + rabbitvcs.vcs.VCS_GIT: GitEditConflicts +} + +def editconflicts_factory(path): + guess = rabbitvcs.vcs.guess(path) + return classes_map[guess["vcs"]](path) + +if __name__ == "__main__": + from rabbitvcs.ui import main, BASEDIR_OPT + (options, paths) = main( + [BASEDIR_OPT], + usage="Usage: rabbitvcs edit-conflicts [path1] [path2] ..." + ) + + window = editconflicts_factory(paths[0]) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/export.py rabbitvcs-0.15.0.5/rabbitvcs/ui/export.py --- rabbitvcs-0.13.1/rabbitvcs/ui/export.py 2010-03-14 06:57:53.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/export.py 2010-12-29 15:51:16.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,29 +27,32 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.checkout import Checkout +from rabbitvcs.ui.checkout import SVNCheckout +from rabbitvcs.ui.clone import GitClone from rabbitvcs.ui.dialog import MessageBox -from rabbitvcs.ui.action import VCSAction -import rabbitvcs.lib.helper +from rabbitvcs.ui.action import SVNAction, GitAction +import rabbitvcs.util.helper from rabbitvcs import gettext _ = gettext.gettext -class Export(Checkout): +class SVNExport(SVNCheckout): def __init__(self, path=None, revision=None): - Checkout.__init__(self, path, url=None, revision=revision) + SVNCheckout.__init__(self, path, url=None, revision=revision) + + self.svn = self.vcs.svn() self.get_widget("Checkout").set_title(_("Export - %s") % path) # Determine behavior based on the given path - if self.vcs.is_in_a_or_a_working_copy(path): + if self.svn.is_in_a_or_a_working_copy(path): # If path is from a working copy, export FROM path and set revision # to working copy self.repositories.set_child_text(path) self.get_widget("destination").set_text("") if revision is None: self.revision_selector.set_kind_working() - elif self.vcs.is_path_repository_url(path): + elif self.svn.is_path_repository_url(path): # If path is a repository, export FROM path self.repositories.set_child_text(path) self.get_widget("destination").set_text("") @@ -81,16 +84,16 @@ revision = self.revision_selector.get_revision_object() self.hide() - self.action = VCSAction( - self.vcs, + self.action = SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Export")) self.action.append(self.action.set_status, _("Running Export Command...")) - self.action.append(rabbitvcs.lib.helper.save_repository_path, url) + self.action.append(rabbitvcs.util.helper.save_repository_path, url) self.action.append( - self.vcs.export, + self.svn.export, url, path, force=True, @@ -101,14 +104,117 @@ self.action.append(self.action.set_status, _("Completed Export")) self.action.append(self.action.finish) self.action.start() + +class GitExport(GitClone): + def __init__(self, path=None, revision=None): + + self.vcs = rabbitvcs.vcs.VCS() + self.git = None + guess = rabbitvcs.vcs.guess(path) + if guess["vcs"] == rabbitvcs.vcs.VCS_GIT: + self.git = self.vcs.git(path) + export_to = "" + export_from = path + else: + export_to = path + export_from = "" + + GitClone.__init__(self, export_to, export_from) + + self.get_widget("Checkout").set_title(_("Export - %s") % path) + + self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("revision_container"), + self.git, + revision=revision, + url_combobox=self.repositories, + expand=True + ) + + self.get_widget("revision_selector_box").show() + + def on_ok_clicked(self, widget): + url = self.repositories.get_active_text() + path = self._get_path() + + if not url or not path: + MessageBox(_("The repository URL and destination path are both required fields.")) + return + + if url.startswith("file://"): + url = self._parse_path(url) + + # Cannot do: + # url = os.path.normpath(url) + # ...in general, since it might be eg. an http URL. Doesn't seem to + # affect pySvn though. + + path = os.path.normpath(path) + revision = self.revision_selector.get_revision_object() + + self.hide() + self.action = GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + + self.action.append(self.action.set_header, _("Export")) + self.action.append(self.action.set_status, _("Running Export Command...")) + self.action.append(rabbitvcs.util.helper.save_repository_path, url) + self.action.append( + self.git.export, + url, + path, + revision=revision + ) + self.action.append(self.action.set_status, _("Completed Export")) + self.action.append(self.action.finish) + self.action.start() + + def on_repositories_changed(self, widget, data=None): + # Do not use quoting for this bit + url = self.repositories.get_active_text() + tmp = url.replace("//", "/").split("/")[1:] + append = "" + prev = "" + while len(tmp): + prev = append + append = tmp.pop() + if append not in ("trunk", "branches", "tags"): + break + + if append in ("http:", "https:", "file:", "svn:", "svn+ssh:"): + append = "" + break + + self.get_widget("destination").set_text( + os.path.join(self.destination, append) + ) + self.check_form() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNExport, + rabbitvcs.vcs.VCS_GIT: GitExport +} + +def export_factory(vcs, path, revision=None): + if not vcs: + guess = rabbitvcs.vcs.guess(path) + vcs = guess["vcs"] + + if vcs == rabbitvcs.vcs.VCS_DUMMY: + vcs = rabbitvcs.vcs.VCS_SVN + + return classes_map[vcs](path, revision) + if __name__ == "__main__": - from rabbitvcs.ui import main, REVISION_OPT + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT (options, paths) = main( - [REVISION_OPT], - usage="Usage: rabbitvcs export [url_or_path]" + [REVISION_OPT, VCS_OPT], + usage="Usage: rabbitvcs export --vcs=[git|svn] [url_or_path]" ) - window = Export(paths[0], revision=options.revision) + window = export_factory(options.vcs, paths[0], revision=options.revision) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/about.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/about.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/about.glade 2009-10-28 17:13:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/about.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,249 +0,0 @@ - - - - - - 775 - 575 - True - About - GTK_WIN_POS_CENTER - rabbitvcs-small - GDK_GRAVITY_CENTER - - - -vertical - True - 12 - 18 - - - True - 12 - - - True - <span size="xx-large"><b>RabbitVCS</b></span> - True - - - - - False - False - - - - - True - 12 - - -vertical - True - 6 - - - True - - - 100 - True - 0 - 0 - Authors: - - - False - False - - - - - 600 - True - 0 - True - True - - - False - False - 1 - - - - - False - False - - - - - True - - - 100 - True - 0 - 0 - Thanks: - - - False - False - - - - - 175 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_ETCHED_IN - - - True - True - False - GTK_WRAP_WORD - 5 - 5 - - - - - 1 - - - - - 1 - - - - - - - False - False - 1 - - - - -vertical - True - 6 - - - True - 0 - <b>Version Information</b> - True - - - False - False - - - - - True - 12 - - - True - 0 - True - - - - - False - False - 1 - - - - - False - False - 2 - - - - -vertical - True - - - True - 0 - <b>Links</b> - True - - - False - False - - - - - True - 12 - - - True - 0 - http://code.googlecode.com/p/rabbitvcs -http://subversion.tigris.org -http://pysvn.tigris.org/ -http://voidspace.org.uk/python/configobj.html - True - - - - - False - False - 1 - - - - - False - False - 3 - - - - - True - 6 - GTK_BUTTONBOX_END - - - True - True - True - gtk-close - True - 0 - - - - - - False - False - GTK_PACK_END - 4 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/add.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/add.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/add.glade 2009-11-06 20:02:25.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/add.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ - - - - - - True - Add - center - 400 - 300 - rabbitvcs-small - center - - - - True - 12 - vertical - 6 - - - 200 - True - True - automatic - automatic - etched-in - - - True - True - - - - - 0 - - - - - Select / Deselect all - True - True - False - True - True - - - - False - False - 1 - - - - - True - - - True - 0 - - - False - False - 1 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 1 - - - - - False - False - end - 2 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/annotate.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/annotate.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/annotate.glade 2009-10-28 17:50:05.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/annotate.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,272 +0,0 @@ - - - - - - 750 - 550 - True - Annotate - center - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - True - automatic - automatic - - - True - True - True - - - - - 0 - - - - - True - - - True - vertical - 6 - - - True - 12 - - - True - vertical - 6 - - - True - 0 - <b>From Revision</b> - True - - - 0 - - - - - True - 6 - - - 100 - True - True - - - 0 - - - - - True - True - True - - - - True - rabbitvcs-show_log - - - - - False - False - 1 - - - - - 1 - - - - - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>To Revision</b> - True - - - 0 - - - - - True - 6 - - - 100 - True - True - - - 0 - - - - - True - True - True - - - - True - rabbitvcs-show_log - - - - - False - False - 1 - - - - - True - True - True - - - - True - rabbitvcs-update - - - - - False - False - 6 - 2 - - - - - 1 - - - - - 1 - - - - - False - False - 0 - - - - - 0 - - - - - True - vertical - - - True - - - 1 - - - - - True - 6 - end - - - gtk-save-as - True - False - True - True - True - - - - False - False - 0 - - - - - gtk-close - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 1 - - - - - end - 1 - - - - - False - False - end - 1 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/branch.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/branch.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/branch.glade 2009-12-01 17:59:13.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/branch.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,308 +0,0 @@ - - - - - - 550 - True - Branch/tag - center - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - 0 - <b>Repository</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - 6 - - - 90 - True - 0 - From: - - - False - False - 0 - - - - - True - - - 1 - - - - - True - True - True - - - - True - gtk-find - - - - - False - False - 2 - - - - - 0 - - - - - True - 6 - - - 90 - True - 0 - To: - - - False - False - 0 - - - - - True - - - 1 - - - - - 1 - - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Create copy from</b> - True - - - False - False - 0 - - - - - True - 12 - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - vertical - 6 - - - True - 0 - <b>Add Message</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - start - - - Previous Messages - True - True - True - - - - False - False - 0 - - - - - False - False - 0 - - - - - True - True - automatic - automatic - etched-in - - - 100 - True - True - word - - - - - -1 - - - - - - - 1 - - - - - 2 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - True - True - True - - - - False - False - 1 - - - - - False - False - 3 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/browser.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/browser.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/browser.glade 2009-12-02 19:29:26.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/browser.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,220 +0,0 @@ - - - - - - 640 - 480 - True - Repository Browser - center - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - vertical - 6 - - - True - 6 - - - 90 - True - 0 - URL: - - - False - False - 0 - - - - - True - - - 1 - - - - - False - False - 0 - - - - - True - 6 - - - 90 - True - 0 - Revision: - - - False - False - 0 - - - - - True - - - - - - 1 - - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - True - automatic - automatic - etched-in - - - True - True - - - - - 1 - - - - - 0 - - - - - True - - - True - - - True - 0 - - - False - False - 0 - - - - - 0 - - - - - True - 6 - end - - - True - True - True - - - - True - - - True - gtk-refresh - - - 0 - - - - - True - Load/Refresh - - - 1 - - - - - - - False - False - 0 - - - - - gtk-close - True - True - True - True - - - - False - False - 1 - - - - - False - False - 1 - - - - - False - False - 1 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/changes.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/changes.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/changes.glade 2010-01-24 16:37:51.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/changes.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,494 +0,0 @@ - - - - - - 640 - 500 - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Changes - center - rabbitvcs-small - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 - vertical - 18 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical - 12 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical - 6 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - <b>First:</b> - True - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical - 6 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 100 - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - URL - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 4 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - 0 - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-zoom-fit - 1 - - - - - False - False - 1 - - - - - 1 - - - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 100 - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Revision - - - False - False - 0 - - - - - True - - - - - - 1 - - - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical - 6 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - <b>Second:</b> - True - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical - 6 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 100 - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - URL - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 4 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - 0 - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-zoom-fit - 1 - - - - - False - False - 1 - - - - - 1 - - - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 100 - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Revision - - - False - False - 0 - - - - - True - - - - - - 1 - - - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - vertical - 6 - - - True - - - True - 0 - <b>Differences</b> (double-click to compare with base) - True - - - False - False - 0 - - - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 4 - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - automatic - automatic - etched-in - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - - - - - - - - 0 - - - - - 1 - - - - - 2 - - - - - 0 - - - - - True - - - True - False - - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 6 - end - - - True - True - True - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-refresh - - - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Load/Refresh - - - 1 - - - - - - - False - False - 0 - - - - - gtk-close - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - - False - False - 1 - - - - - False - False - end - 1 - - - - - False - False - 1 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/checkmods.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/checkmods.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/checkmods.glade 2010-01-21 17:39:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/checkmods.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ - - - - - - 550 - 300 - True - Check for Modifications - center - 400 - 300 - rabbitvcs-small - center - - - - True - 12 - vertical - 18 - - - 200 - True - True - automatic - automatic - etched-in - - - True - True - - - - - 0 - - - - - True - 6 - end - - - gtk-refresh - True - True - True - True - - - - False - False - 0 - - - - - gtk-close - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 1 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/checkout.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/checkout.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/checkout.glade 2009-11-16 17:34:56.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/checkout.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,323 +0,0 @@ - - - - - - 550 - True - Checkout - center - 450 - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - 0 - <b>Repository</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - 6 - - - 90 - True - 0 - URL: - - - False - False - 0 - - - - - True - - - - 1 - - - - - True - True - True - True - Browse... - - - - True - gtk-find - 1 - - - - - False - False - 2 - - - - - False - False - 0 - - - - - True - 6 - - - 90 - True - 0 - Destination: - - - False - False - 0 - - - - - True - True - - - - - 1 - - - - - True - True - True - Browse... - - - - True - gtk-harddisk - 2 - - - - - False - False - 2 - - - - - 1 - - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Options</b> - True - - - 0 - - - - - True - 12 - - - True - vertical - 6 - - - Recursive - True - True - False - True - True - - - 0 - - - - - Omit Externals - True - True - False - True - - - 1 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - vertical - 6 - - - True - 0 - <b>Revision</b> - True - - - False - False - 0 - - - - - True - 12 - - - - - - False - False - 1 - - - - - False - False - 2 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - False - True - True - True - - - - False - False - 1 - - - - - False - False - end - 3 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/cleanup.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/cleanup.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/cleanup.glade 2009-10-28 17:13:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/cleanup.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ - - - - - - 400 - True - Cleaning Up... - center - rabbitvcs-small - - - -vertical - True - 12 - - - True - 0.10000000149011612 - 5 - gtk-directory - 6 - - - False - False - - - - - True - 0.10000000149011612 - 5 - Cleanup Requested.... - -Begin working copy cleanup? - - - False - False - 1 - - - - - True - 6 - GTK_BUTTONBOX_END - - - True - True - True - gtk-cancel - True - 0 - - - - False - False - - - - - True - False - True - True - gtk-ok - True - 0 - - - - False - False - 1 - - - - - False - False - 2 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/commit.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/commit.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/commit.glade 2010-01-24 16:37:51.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/commit.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,314 +0,0 @@ - - - - - - True - Commit - center - 640 - 640 - rabbitvcs-small - - - - - True - 12 - vertical - 18 - - - True - 12 - - - 100 - True - 0 - 0 - <b>Commit to:</b> - True - char - - - False - False - 0 - - - - - 500 - True - 0 - True - char - - - 1 - - - - - False - False - 3 - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Add Message</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - 0 - True - start - - - Previous Messages - True - True - True - - - - False - False - 0 - - - - - False - False - 0 - - - - - True - True - automatic - automatic - etched-in - - - True - True - True - 7 - word - False - - - - - -1 - - - - - - - 1 - - - - - 1 - - - - - True - vertical - 6 - - - True - 0 - <b>Changed Files</b> (double-click to compare with base) - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - True - automatic - automatic - etched-in - - - True - True - - - - - 0 - - - - - True - vertical - - - Select / Deselect all - True - True - False - True - - - - False - False - 0 - - - - - Show unversioned files - True - True - False - True - True - - - - False - False - 1 - - - - - False - False - 1 - - - - - - - 1 - - - - - 2 - - - - - True - - - True - 0 - - - False - False - 0 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 1 - - - - - False - False - end - 3 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/createpatch.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/createpatch.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/createpatch.glade 2010-01-24 16:37:51.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/createpatch.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,177 +0,0 @@ - - - - - - 640 - True - Create Patch - center - rabbitvcs-small - - - True - 12 - vertical - 18 - - - - - - - - - True - vertical - 6 - - - True - 0 - <b>Changed Files</b> (double-click to compare with base) - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - True - automatic - automatic - etched-in - - - 250 - True - True - - - - - - - 0 - - - - - True - vertical - - - Select / Deselect all - True - True - False - True - - - - False - False - 0 - - - - - False - False - 1 - - - - - - - 1 - - - - - 2 - - - - - True - - - True - 0 - - - False - False - 0 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 1 - - - - - False - False - end - 3 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/dialogs.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/dialogs.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/dialogs.glade 2010-03-25 20:06:28.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/dialogs.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,2076 +0,0 @@ - - - - - - 450 - 5 - Authentication - center - rabbitvcs-small - dialog - False - - - True - vertical - 12 - - - True - 6 - vertical - 6 - - - True - 0 - <b>Please add your authentication details</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - - - 100 - True - 0 - 0 - Realm: - - - False - False - 0 - - - - - 300 - True - 0 - 0 - True - char - True - - - 1 - - - - - 0 - - - - - True - - - 100 - True - 0 - Login: - - - False - False - 0 - - - - - True - True - True - - - 1 - - - - - 1 - - - - - True - - - 100 - True - 0 - Password: - - - False - False - 0 - - - - - True - True - False - True - - - 1 - - - - - 2 - - - - - True - - - 100 - True - - - False - False - 0 - - - - - Save Authentication - True - True - False - True - - - 1 - - - - - 3 - - - - - - - 1 - - - - - False - False - 1 - - - - - True - end - - - gtk-cancel - -6 - True - True - False - True - - - False - False - 0 - - - - - gtk-ok - -5 - True - True - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - 550 - 5 - Check Certificate - center - rabbitvcs-small - dialog - False - - - 400 - True - vertical - 12 - - - True - 6 - vertical - 6 - - - True - 0 - <b>Certificate Details</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - - - 100 - True - 0 - 0 - Realm: - start - - - False - False - 0 - - - - - True - 0 - 0 - True - - - 1 - - - - - False - False - 0 - - - - - True - - - 100 - True - 0 - 0 - Host: - start - - - False - False - 0 - - - - - True - 0 - 0 - True - - - 1 - - - - - False - False - 1 - - - - - True - - - 100 - True - 0 - 0 - Issuer: - start - - - False - False - 0 - - - - - True - 0 - 0 - True - - - 1 - - - - - False - False - 2 - - - - - True - - - 100 - True - 0 - 0 - Valid: - start - - - False - False - 0 - - - - - True - 0 - 0 - True - - - 1 - - - - - False - False - 3 - - - - - True - - - 100 - True - 0 - 0 - Fingerprint: - start - - - False - False - 0 - - - - - True - 0 - 0 - True - - - 1 - - - - - False - False - 4 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - spread - - - Accept Once - 1 - True - True - True - - - False - False - 0 - - - - - Accept Forever - 2 - True - True - True - - - False - False - 1 - - - - - Deny - True - True - True - - - False - False - 2 - - - - - False - False - end - 0 - - - - - - - 500 - 5 - Previous Messages - center - 450 - rabbitvcs-small - dialog - False - - - True - vertical - 12 - - - True - 6 - vertical - 6 - - - True - 0 - <b>Previous Messages</b> - True - - - False - False - 0 - - - - - True - 12 - - - 200 - True - True - automatic - automatic - etched-in - - - True - True - - - - - - - - 1 - - - - - 1 - - - - - True - 6 - vertical - 6 - - - True - 0 - <b>Message</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - True - automatic - automatic - etched-in - - - 100 - True - True - word - - - - - - - 1 - - - - - 2 - - - - - True - end - - - gtk-cancel - -6 - True - True - True - True - - - False - False - 0 - - - - - gtk-ok - -5 - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - 400 - 5 - Property - center - rabbitvcs-small - dialog - False - - - True - vertical - 12 - - - True - 6 - vertical - 6 - - - True - 0 - <b>Edit Property Details</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - - - 100 - True - 0 - Property: - - - False - False - 0 - - - - - True - True - - - 1 - - - - - 0 - - - - - True - - - 100 - True - 0 - 0.05000000074505806 - Value: - - - False - False - 0 - - - - - True - True - automatic - automatic - etched-in - - - 100 - True - True - word - - - - - 1 - - - - - 1 - - - - - True - - - 100 - True - - - False - False - 0 - - - - - Apply property recursively - True - True - False - True - True - - - False - False - 1 - - - - - 2 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - end - - - gtk-cancel - -6 - True - True - True - True - - - False - False - 0 - - - - - gtk-ok - -5 - True - True - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - 5 - Confirmation - center - rabbitvcs-small - dialog - False - - - True - vertical - 12 - - - True - - - 75 - True - gtk-dialog-warning - 6 - - - False - False - 0 - - - - - True - 0 - 6 - 6 - Are you sure you want to continue? - - - False - False - 1 - - - - - False - False - 1 - - - - - True - end - - - gtk-no - -6 - True - True - True - True - - - False - False - 0 - - - - - gtk-yes - -5 - True - True - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - True - 5 - Message - center - rabbitvcs-small - dialog - False - - - True - vertical - 12 - - - True - 0 - 6 - 6 - - - 1 - - - - - True - end - - - gtk-ok - 1 - True - True - True - True - - - - False - False - 0 - - - - - False - end - 0 - - - - - - - 400 - 5 - center - rabbitvcs-small - dialog - False - - - True - vertical - 12 - - - True - 6 - vertical - 6 - - - True - 0 - <b>Please add your authentication details</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - - - 100 - True - 0 - 0 - Realm: - - - False - False - 0 - - - - - True - 0 - 0 - True - True - - - False - False - 1 - - - - - 0 - - - - - True - - - 100 - True - 0 - Password: - - - False - False - 0 - - - - - True - True - False - True - - - 1 - - - - - 1 - - - - - True - - - 100 - True - - - False - False - 0 - - - - - Save Authentication - True - True - False - True - - - 1 - - - - - 2 - - - - - - - False - False - 1 - - - - - 1 - - - - - True - end - - - gtk-cancel - -6 - True - True - True - True - - - False - False - 0 - - - - - gtk-ok - -5 - True - True - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - 5 - Delete Confirmation - center - rabbitvcs-small - dialog - False - - - True - vertical - 12 - - - True - - - 75 - True - gtk-dialog-warning - 6 - - - False - False - 0 - - - - - True - 12 - vertical - 18 - - - True - 0 - <span size="large"><b>Are you sure you want to delete %item%?</b></span> - True - - - False - False - 0 - - - - - True - 0 - The item(s) will be sent to the trash can. - - - False - False - 1 - - - - - 1 - - - - - 1 - - - - - True - end - - - gtk-cancel - -6 - True - True - True - True - - - False - False - 0 - - - - - gtk-delete - -5 - True - True - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - 400 - 5 - SSL Client Certification - center - dialog - False - - - True - vertical - 12 - - - True - vertical - 6 - - - True - 0 - <b>Please provide your ssl certification file</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - - - 100 - True - 0 - Realm: - - - False - False - 0 - - - - - True - 0 - - - 1 - - - - - 0 - - - - - True - 2 - - - 100 - True - 0 - Path: - - - False - False - 0 - - - - - True - True - - - - 1 - - - - - True - True - True - - - - True - gtk-harddisk - - - - - False - False - 2 - - - - - 1 - - - - - Save Authentication - True - True - False - 0.4699999988079071 - True - - - 2 - - - - - - - False - False - 1 - - - - - 1 - - - - - True - end - - - gtk-cancel - -6 - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - -5 - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - 350 - 200 - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - center-on-parent - dialog - False - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical - 12 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical - 6 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - <b>Message</b> - True - - - False - False - 0 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - automatic - automatic - etched-in - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - word - - - - - - - 1 - - - - - 1 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - end - - - gtk-cancel - -6 - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - False - False - 0 - - - - - gtk-ok - -5 - True - True - True - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - 300 - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - Loading... - True - center-on-parent - dialog - False - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - vertical - 6 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - False - False - 1 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - end - - - gtk-cancel - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - - False - False - 0 - - - - - False - end - 0 - - - - - - - 320 - 240 - 5 - Create Folder... - normal - False - - - True - vertical - 12 - - - True - vertical - 6 - - - True - vertical - 6 - - - True - 0 - <b>Folder Name</b> - True - - - 0 - - - - - True - 12 - - - True - True - - - - - - - 1 - - - - - False - False - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Add Message</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - True - automatic - automatic - etched-in - - - True - True - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - True - end - - - gtk-cancel - -6 - True - True - True - True - - - False - False - 0 - - - - - gtk-ok - -5 - True - True - True - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - - 400 - 5 - Text Change - normal - False - - - True - vertical - 12 - - - True - - - 100 - True - 0 - New Name: - - - False - False - 0 - - - - - True - True - - - - 1 - - - - - False - False - 1 - - - - - True - end - - - gtk-cancel - -6 - True - True - True - True - - - False - False - 0 - - - - - gtk-ok - -5 - True - True - True - True - - - False - False - 1 - - - - - False - False - end - 0 - - - - - - - 500 - 300 - 5 - RabbitVCS Error - rabbitvcs - normal - False - - - True - vertical - 6 - - - True - 6 - - - True - gtk-dialog-warning - 6 - - - False - 0 - - - - - True - <span weight="bold" size="xx-large">RabbitVCS Error</span> - True - - - 1 - - - - - False - 1 - - - - - True - - - - - - False - 2 - - - - - True - True - automatic - automatic - etched-in - - - True - True - False - False - - - - - 3 - - - - - True - end - - - gtk-close - True - True - True - True - - - False - False - 0 - - - - - False - end - 0 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/import.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/import.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/import.glade 2009-10-28 17:13:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/import.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ - - - - - - 550 - True - Import - center - rabbitvcs-small - - - -vertical - True - 12 - 18 - - -vertical - True - 6 - - - True - 0 - <b>Repository</b> - True - - - False - False - - - - - True - 12 - - -vertical - True - 6 - - - True - - - True - True - - - - - - - - - False - False - 1 - - - - - - -vertical - True - 6 - - - True - 0 - <b>Import Message</b> - True - - - False - False - - - - - True - 12 - - -vertical - True - 6 - - - True - GTK_BUTTONBOX_START - - - True - True - True - Previous Messages - 0 - - - - - - False - False - - - - - 150 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_ETCHED_IN - - - True - True - GTK_WRAP_WORD - - - - - 1 - - - - - True - True - Include ignored files - 0 - True - - - False - False - 2 - - - - - - - False - False - 1 - - - - - 1 - - - - - True - 6 - GTK_BUTTONBOX_END - - - True - True - True - gtk-cancel - True - 0 - - - - - - True - True - True - gtk-ok - True - 0 - - - - 1 - - - - - False - False - GTK_PACK_END - 2 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/lock.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/lock.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/lock.glade 2009-11-06 20:02:25.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/lock.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,278 +0,0 @@ - - - - - - 600 - True - Lock Files - center - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - 0 - <b>Please describe why you are locking these files</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - start - - - Previous Messages - True - True - True - - - - False - False - 0 - - - - - False - False - 0 - - - - - 100 - True - True - automatic - automatic - etched-in - - - True - True - word - - - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Files to lock</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - 250 - True - True - automatic - automatic - etched-in - - - True - True - - - - - 0 - - - - - True - vertical - - - Select / Deselect all - True - True - False - True - - - - False - False - 0 - - - - - Steal the locks - True - True - False - True - - - - False - False - 1 - - - - - 1 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - - - True - 0 - 0 - - - False - False - 1 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 1 - - - - - False - False - end - 2 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/log.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/log.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/log.glade 2010-01-24 16:37:51.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/log.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,403 +0,0 @@ - - - - - - 775 - True - Log - center - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - 12 - - - True - 0 - <b>Revisions Table</b> - True - - - False - False - 0 - - - - - True - 3 - - - True - Showing Revisions: - - - 0 - - - - - True - N/A - - - 1 - - - - - True - to - - - 2 - - - - - True - N/A - - - 3 - - - - - False - False - end - 2 - - - - - Stop on copy - True - True - False - True - - - - False - False - end - 1 - - - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - 180 - True - True - automatic - automatic - etched-in - - - True - True - True - - - - - 0 - - - - - - - 1 - - - - - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Message</b> - True - - - False - False - 0 - - - - - True - 12 - - - 100 - True - True - automatic - automatic - etched-in - - - True - True - False - word - - - - - - - 1 - - - - - 1 - - - - - True - vertical - 6 - - - True - 0 - <b>Affected File(s)</b> (double-click to compare with base) - True - - - False - False - 0 - - - - - True - 12 - - - 120 - True - True - automatic - automatic - etched-in - - - True - True - - - - - - - 1 - - - - - 2 - - - - - True - 12 - - - True - 6 - - - True - 6 - start - - - gtk-go-back - True - False - True - True - True - - - - False - False - 0 - - - - - gtk-go-forward - True - False - True - True - True - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - 6 - - - True - Limit: - - - False - False - 0 - - - - - 75 - True - True - 100 - - - False - False - 1 - - - - - True - True - True - Refresh - - - - True - gtk-refresh - - - - - False - False - 2 - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - 6 - end - - - gtk-close - True - True - True - True - - - - False - False - 0 - - - - - False - False - end - 1 - - - - - False - False - end - 3 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/merge.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/merge.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/merge.glade 2009-10-28 17:13:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/merge.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,914 +0,0 @@ - - - - - - 550 - True - 12 - Merge Assistant - center - rabbitvcs-small - GDK_GRAVITY_CENTER - - - - - - - -vertical - True - 12 - 18 - - -vertical - True - - - True - True - Merge a range of revisions - 0 - True - True - - - False - False - - - - - 475 - True - 0 - 30 - Choose this method if you have made some changes to a branch and wish to merge your changes with another branch. - True - - - 1 - - - - - False - False - - - - -vertical - True - - - True - True - Merge two different trees - 0 - True - True - mergetype_range_opt - - - False - False - - - - - 475 - True - 0 - 30 - Choose this method if you wish to merge two different branches into your working copy. - True - - - 1 - - - - - False - False - 1 - - - - - GTK_ASSISTANT_PAGE_INTRO - Step 1: Merge Type - - - - -vertical - True - 12 - 18 - - -vertical - True - 6 - - - True - 0 - <b>URL to merge from</b> - True - - - False - False - - - - - True - 12 - - - True - - - True - True - - - - - - - - False - False - 1 - - - - - False - False - - - - -vertical - True - 6 - - - True - 0 - <b>Revision Range</b> - True - - - False - False - - - - - True - 12 - - -vertical - True - 6 - - - True - 6 - - - True - True - - - - - - True - True - True - Show log - 0 - - - - True - 24 - rabbitvcs-show_log - - - - - False - False - 1 - - - - - False - False - - - - - 500 - True - 0 - 30 - Use the log dialog to select the revisions that you wish to merge. Or write out the revisions manually, each separated by a comma. You can specify a revision range by a dash. - -Example: 4-7,9,11,15-HEAD - -To merge all revisions, leave the box empty. - True - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - -vertical - True - 6 - - - True - 0 - <b>Working Copy</b> - True - - - False - False - - - - - True - 12 - - - True - 12 - - - True - 0 - - - - - - - False - False - 1 - - - - - False - False - 2 - - - - - Step 2: Merge a Range of Revisions - - - - -vertical - True - 12 - 18 - - -vertical - True - 6 - - - True - 0 - <b>From URL</b> - True - - - False - False - - - - - True - 12 - - - True - 6 - - - True - - - True - - - True - True - - - - - - - - - - True - True - True - Show log - 0 - - - - True - 24 - rabbitvcs-show_log - - - - - False - False - GTK_PACK_END - 1 - - - - - - - False - False - 1 - - - - - False - False - - - - -vertical - True - - - True - 0 - <b>Working Copy</b> - True - - - False - False - - - - - True - 12 - - - True - 12 - - - True - 0 - True - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - Step 2: Reintegrate by Branch - - - - -vertical - True - 12 - 18 - - -vertical - True - 6 - - - True - 0 - <b>From: (URL and revision to merge)</b> - True - - - False - False - - - - - True - 12 - - -vertical - True - 6 - - - True - - - True - True - - - - - - False - False - - - - -vertical - True - - - True - True - HEAD - 0 - True - True - - - False - False - - - - - True - 6 - - - 140 - True - True - Revision - 0 - True - mergetree_from_revision_head_opt - - - - - 75 - True - True - - - - False - False - 1 - - - - - True - True - True - Show log - 0 - - - - True - 24 - rabbitvcs-show_log - - - - - False - False - 2 - - - - - False - False - 1 - - - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - - - - -vertical - True - 6 - - - True - 0 - <b>To: (URL and revision to merge)</b> - True - - - False - False - - - - - True - 12 - - -vertical - True - 6 - - - True - - - True - True - - - - - - False - False - - - - -vertical - True - - - True - True - HEAD - 0 - True - True - - - False - False - - - - - True - 6 - - - 140 - True - True - Revision - 0 - True - mergetree_to_revision_head_opt - - - - - 75 - True - True - - - - False - False - 1 - - - - - True - True - True - Show log - 0 - - - - True - 24 - rabbitvcs-show_log - - - - - False - False - 2 - - - - - False - False - 1 - - - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - -vertical - True - 6 - - - True - 0 - <b>Working Copy</b> - True - - - False - False - - - - - True - 12 - - - True - 12 - - - True - 0 - - - - - - - False - False - 1 - - - - - False - False - 2 - - - - - Step 2: Merge two different trees - - - - -vertical - True - 12 - 18 - - -vertical - True - 6 - - - True - 0 - <b>Options</b> - True - - - False - False - - - - - True - 12 - - -vertical - True - - - True - True - Recursive - 0 - True - True - - - - - True - True - Ignore ancestry - 0 - True - - - False - False - 1 - - - - - True - True - Only record the merge - 0 - True - - - 2 - - - - - - - False - False - 1 - - - - - False - False - - - - - True - GTK_BUTTONBOX_END - - - True - True - True - 0 - - - - True - - - True - gtk-execute - - - - - True - Test Merge - - - 1 - - - - - - - - - False - False - 1 - - - - - GTK_ASSISTANT_PAGE_CONFIRM - Step 3: Final Options - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/notification.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/notification.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/notification.glade 2009-10-28 17:13:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/notification.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,139 +0,0 @@ - - - - - - 740 - True - Notification Messages - center - rabbitvcs-small - GDK_GRAVITY_CENTER - - - -vertical - True - 12 - 18 - - -vertical - True - 6 - - - True - 0 - True - - - False - False - - - - - True - 0 - - - False - False - 1 - - - - - False - False - 1 - - - - - 225 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_ETCHED_IN - - - True - True - - - - - 2 - - - - -vertical - True - 6 - - - True - - - False - False - - - - - False - False - 3 - - - - - True - 6 - GTK_BUTTONBOX_END - - - True - True - True - gtk-cancel - True - 0 - - - - - - True - False - True - True - True - True - True - True - gtk-ok - True - 1 - - - - 1 - - - - - False - False - GTK_PACK_END - 3 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/properties.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/properties.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/properties.glade 2009-10-28 17:13:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/properties.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,258 +0,0 @@ - - - - - - 500 - True - Properties - GTK_WIN_POS_CENTER - rabbitvcs-small - - - -vertical - True - 12 - 18 - - -vertical - True - 6 - - - True - 0 - <b>Properties for:</b> - True - - - False - False - - - - - True - 12 - - -vertical - True - 6 - - - True - 6 - - - 90 - True - 0 - URL/Path: - - - False - False - - - - - True - True - - - - 1 - - - - - True - True - True - 0 - - - - True - gtk-refresh - - - - - False - False - 2 - - - - - False - False - - - - - 150 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_ETCHED_IN - - - True - True - True - - - - - - - 1 - - - - - True - <i>Selected properties will be applied recursively.</i> - True - - - False - False - 2 - - - - - True - True - Delete properties recursively - 0 - True - - - False - False - 3 - - - - - True - 3 - GTK_BUTTONBOX_START - - - True - True - True - New... - 0 - - - - False - False - - - - - True - False - True - True - Edit... - 0 - - - - False - False - 1 - - - - - True - False - True - True - Delete - 0 - - - - False - False - 2 - - - - - False - False - 4 - - - - - - - 1 - - - - - - - True - 6 - GTK_BUTTONBOX_END - - - True - True - True - gtk-cancel - True - 0 - - - - False - False - - - - - True - True - True - gtk-save - True - 0 - - - - False - False - 1 - - - - - False - False - GTK_PACK_END - 1 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/property_editor.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/property_editor.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/property_editor.glade 2010-01-24 16:50:04.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/property_editor.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,222 +0,0 @@ - - - - - - True - Property Editor - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - 2 - 2 - 20 - 6 - - - True - - - True - <b>Working Copy:</b> - True - True - - - False - False - 0 - - - - - GTK_SHRINK | GTK_FILL - GTK_SHRINK | GTK_FILL - - - - - True - - - True - <b>Remote URI:</b> - True - True - - - False - False - 0 - - - - - 1 - 2 - GTK_SHRINK | GTK_FILL - GTK_SHRINK | GTK_FILL - - - - - True - - - True - 0 - middle - - - 0 - - - - - 1 - 2 - 1 - 2 - - - - - True - - - True - 0 - middle - - - 0 - - - - - 1 - 2 - - - - - False - 0 - - - - - True - True - automatic - automatic - etched-in - - - True - True - - - - - 1 - - - - - True - 6 - True - center - - - gtk-refresh - True - True - True - Refresh the list of properties. - True - - - - False - False - 0 - - - - - gtk-new - True - True - True - Add a new property. - True - - - - False - False - 1 - - - - - False - False - 2 - - - - - True - True - - - - - - 3 - - - - - True - 6 - True - end - - - gtk-close - True - True - True - Close this dialog. - True - - - - False - False - 0 - - - - - False - False - 4 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/property_page.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/property_page.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/property_page.glade 2010-01-26 16:07:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/property_page.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,254 +0,0 @@ - - - - - - True - - - True - rabbitvcs - - - False - False - 0 - - - - - True - RabbitVCS - - - 1 - - - - - True - vertical - - - - - - True - True - - - - - - True - 0 - - - label_item - - - - - True - vertical - - - 16 - True - - - 0 - - - - - True - - - True - 0 - 8 - gtk-file - 6 - - - False - False - 0 - - - - - True - 5 - 2 - 16 - 8 - - - True - 0 - Name: - - - GTK_FILL - GTK_FILL - - - - - True - 0 - Remote URL: - - - 2 - 3 - GTK_FILL - GTK_FILL - - - - - True - 0 - Content status: - - - 3 - 4 - GTK_FILL - GTK_FILL - - - - - True - 0 - Property status: - - - 4 - 5 - GTK_FILL - GTK_FILL - - - - - True - 0 - VCS: - - - 1 - 2 - GTK_FILL - GTK_FILL - - - - - True - 0 - - - 1 - 2 - - - - - True - 0 - - - 1 - 2 - 1 - 2 - - - - - True - 0 - middle - - - 1 - 2 - 2 - 3 - - - - - True - - - True - - - False - 0 - - - - - True - 0 - - - 1 - - - - - 1 - 2 - 4 - 5 - - - - - True - - - True - - - False - 0 - - - - - True - 0 - - - 1 - - - - - 1 - 2 - 3 - 4 - - - - - 1 - - - - - 1 - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/relocate.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/relocate.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/relocate.glade 2009-10-28 17:13:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/relocate.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,168 +0,0 @@ - - - - - - 640 - True - Relocate - center - rabbitvcs-small - - - -vertical - True - 12 - 18 - - -vertical - True - 6 - - - True - 0 - <b>Change the repository of your working copy</b> - True - - - False - False - - - - - True - 12 - - -vertical - True - 6 - - - True - 6 - - - 100 - True - 0 - From: - - - False - False - - - - - True - True - - - 1 - - - - - False - False - - - - - True - 6 - - - 100 - True - 0 - To: - - - False - False - - - - - True - - - True - True - - - - - 1 - - - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - - - - - True - 6 - GTK_BUTTONBOX_END - - - True - True - True - gtk-cancel - True - 0 - - - - - - True - True - True - gtk-ok - True - 0 - - - - 1 - - - - - False - False - GTK_PACK_END - 1 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/settings.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/settings.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/settings.glade 2010-02-26 16:55:45.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/settings.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,724 +0,0 @@ - - - - - - 550 - 425 - True - Settings - center - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - True - - - True - vertical - - - True - 12 - vertical - 6 - - - True - 0 - <b>RabbitVCS</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - - - 90 - True - 0 - 5 - Language: - - - False - False - 0 - - - - - True - - - False - False - end - 1 - - - - - False - False - 0 - - - - - True - vertical - - - Enable file attributes - True - True - False - True - True - - - False - False - 0 - - - - - Enable emblems - True - True - False - True - True - - - False - False - 1 - - - - - Enable recursive status checks - True - False - True - True - - - False - False - 2 - - - - - Show RabbitVCS debugging tools - True - True - False - The debug menu is used to diagnose problems with RabbitVCS itself - True - - - False - False - 3 - - - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - - - General - - - False - tab - - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - 0 - <b>Program used to compare files</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - 6 - - - True - True - - - 0 - - - - - True - True - True - Browse... - - - - True - gtk-harddisk - - - - - False - False - 1 - - - - - False - False - 0 - - - - - Show new version on the left side - True - True - False - True - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - 1 - - - - - True - External Programs - - - 1 - False - tab - - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - 0 - <b>URL History</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - 6 - - - True - 0 - Number of URLs to remember - - - 0 - - - - - 60 - True - True - - - False - False - 1 - - - - - gtk-clear - True - True - True - True - - - - False - False - 2 - - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Log Messages</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - 6 - - - True - 0 - Number of messages to remember - word-char - - - 0 - - - - - 60 - True - True - - - False - False - 2 - - - - - gtk-clear - True - True - True - True - - - - False - False - end - 1 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - vertical - 6 - - - True - 0 - <b>Authentication</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - 6 - - - True - 0.0099999997764825821 - Clear your authentication information - - - 0 - - - - - gtk-clear - True - True - True - True - - - - False - False - end - 1 - - - - - - - False - False - 1 - - - - - False - False - 2 - - - - - 2 - - - - - True - Saved Data - - - 2 - False - tab - - - - - True - 12 - vertical - 6 - - - True - 0 - 0 - <b>Logging Options</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - - - True - 0 - Type: - - - False - False - 0 - - - - - True - - - False - False - end - 1 - - - - - False - False - 0 - - - - - True - - - True - 0 - Minimum level to log - - - False - False - 0 - - - - - True - - - False - False - end - 1 - - - - - False - False - 1 - - - - - - - 1 - - - - - 3 - - - - - True - Logging - - - 3 - False - tab - - - - - 0 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 1 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/switch.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/switch.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/switch.glade 2009-11-02 21:51:42.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/switch.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,205 +0,0 @@ - - - - - - 550 - True - Switch - center - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - 0 - <b>Switch Details</b> - True - - - 0 - - - - - True - 12 - - - True - vertical - 6 - - - True - - - 100 - True - 0 - 5 - From: - - - False - False - 0 - - - - - True - True - - - 1 - - - - - 0 - - - - - True - - - 100 - True - 0 - 5 - To: - - - False - False - 0 - - - - - True - - - 1 - - - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Revision</b> - True - - - 0 - - - - - True - 12 - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 2 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/glade/update.glade rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/update.glade --- rabbitvcs-0.13.1/rabbitvcs/ui/glade/update.glade 2009-11-02 21:57:24.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/glade/update.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,174 +0,0 @@ - - - - - - 400 - True - Update - center - rabbitvcs-small - - - - True - 12 - vertical - 18 - - - True - vertical - 6 - - - True - 0 - <b>Revision</b> - True - - - False - False - 0 - - - - - True - 12 - - - - - - False - False - 1 - - - - - False - False - 0 - - - - - True - vertical - 6 - - - True - 0 - <b>Update Depth</b> - True - - - False - False - 0 - - - - - True - 12 - - - True - vertical - - - Recursive - True - True - False - True - True - - - False - False - 0 - - - - - Omit Externals - True - True - False - True - - - False - False - 1 - - - - - - - False - False - 1 - - - - - False - False - 1 - - - - - True - 6 - end - - - gtk-cancel - True - True - True - True - - - - False - False - 0 - - - - - gtk-ok - True - True - True - True - - - - False - False - 1 - - - - - False - False - end - 2 - - - - - - diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/ignore.py rabbitvcs-0.15.0.5/rabbitvcs/ui/ignore.py --- rabbitvcs-0.13.1/rabbitvcs/ui/ignore.py 2009-09-28 11:25:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/ignore.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,18 +20,22 @@ # along with RabbitVCS; If not, see . # +from os import getcwd +import os.path + import pygtk import gobject import gtk -from rabbitvcs.ui import InterfaceNonView -from rabbitvcs.ui.action import VCSAction -import rabbitvcs.lib.vcs +from rabbitvcs.ui import InterfaceNonView, InterfaceView +from rabbitvcs.ui.action import SVNAction, GitAction + +import rabbitvcs.vcs from rabbitvcs import gettext _ = gettext.gettext -class Ignore(InterfaceNonView): +class SVNIgnore(InterfaceNonView): """ This class provides a handler to Ignore functionality. @@ -54,25 +58,85 @@ self.path = path self.pattern = pattern self.glob = glob - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() + + prop = self.svn.PROPERTIES["ignore"] + + self.svn.propset(self.path, prop, self.pattern, recurse=self.glob) + + raise SystemExit() + +class GitIgnore(InterfaceView): + def __init__(self, path, pattern=""): + InterfaceView.__init__(self, "ignore", "Ignore") + + self.path = path + self.pattern = pattern + + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) - def start(self): - prop = self.vcs.PROPERTIES["ignore"] - return self.vcs.propset(self.path, prop, self.pattern, recurse=self.glob) + ignore_files = self.git.get_ignore_files(path) + ignore_file_labels = [] + path_dir = os.path.abspath(self.path) + if os.path.isfile(path_dir): + path_dir = os.path.dirname(path_dir) + + for ignore_file in ignore_files: + label = path + if ignore_file.startswith(path_dir): + label = ignore_file[len(path_dir)+1:] + + ignore_file_labels.append(label) + + text = "" + if pattern != path: + text = pattern + + self.file_editor = rabbitvcs.ui.widget.MultiFileTextEditor( + self.get_widget("fileeditor_container"), + _("Ignore file:"), + ignore_file_labels, + ignore_files, + show_add_line=True, + line_content=text + ) + + def on_destroy(self, widget): + self.destroy() + + def on_cancel_clicked(self, widget, data=None): + self.close() + + def on_ok_clicked(self, widget, data=None): + self.file_editor.save() + self.close() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNIgnore, + rabbitvcs.vcs.VCS_GIT: GitIgnore +} + +def ignore_factory(path, pattern): + guess = rabbitvcs.vcs.guess(path) + return classes_map[guess["vcs"]](path, pattern) + if __name__ == "__main__": - from os import getcwd - from sys import argv + from rabbitvcs.ui import main + (options, args) = main(usage="Usage: rabbitvcs ignore ") - args = argv[1:] path = getcwd() pattern = "" if args: - if args[0] != ".": - path = args[0] - if "1" in args: + if len(args) == 1: + pattern = args[0] + else: + if args[0] != ".": + path = args[0] pattern = args[1] - - window = Ignore(path, pattern) + + window = ignore_factory(path, pattern) window.register_gtk_quit() - window.start() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/import.py rabbitvcs-0.15.0.5/rabbitvcs/ui/import.py --- rabbitvcs-0.13.1/rabbitvcs/ui/import.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/import.py 2010-12-29 16:50:06.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,30 +25,30 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.action import SVNAction import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib.helper +import rabbitvcs.util.helper from rabbitvcs import gettext _ = gettext.gettext -class Import(InterfaceView): +class SVNImport(InterfaceView): def __init__(self, path): InterfaceView.__init__(self, "import", "Import") - self.get_widget("Import").set_title(_("Import - %s") % path) self.path = path - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() - if self.vcs.is_in_a_or_a_working_copy(path): - self.get_widget("repository").set_text(self.vcs.get_repo_url(path)) + if self.svn.is_in_a_or_a_working_copy(path): + self.get_widget("repository").set_text(self.svn.get_repo_url(path)) self.repositories = rabbitvcs.ui.widget.ComboBox( self.get_widget("repositories"), - rabbitvcs.lib.helper.get_repository_paths() + rabbitvcs.util.helper.get_repository_paths() ) self.message = rabbitvcs.ui.widget.TextView( @@ -72,15 +72,15 @@ self.hide() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Import")) self.action.append(self.action.set_status, _("Running Import Command...")) self.action.append( - self.vcs.import_, + self.svn.import_, self.path, url, self.message.get_text(), @@ -96,10 +96,18 @@ if message is not None: self.message.set_text(message) +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNImport +} + +def import_factory(path): + vcs = rabbitvcs.vcs.VCS_SVN + return classes_map[vcs](path) + if __name__ == "__main__": from rabbitvcs.ui import main (options, paths) = main(usage="Usage: rabbitvcs import [path]") - window = Import(paths[0]) + window = import_factory(paths[0]) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/ui/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/ui/__init__.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/__init__.py 2011-10-17 19:05:06.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,12 +28,20 @@ import os -import pygtk -import gobject -import gtk -import gtk.glade +try: + from gi.repository import GObject as gobject +except ImportError: + import gobject + +if "NAUTILUS_PYTHON_REQUIRE_GTK3" in os.environ and os.environ["NAUTILUS_PYTHON_REQUIRE_GTK3"]: + from gi.repository import Gtk as gtk +else: + import gtk -from rabbitvcs import APP_NAME, LOCALE_DIR +from rabbitvcs import APP_NAME, LOCALE_DIR, gettext +_ = gettext.gettext + +import rabbitvcs.vcs.status REVISION_OPT = (["-r", "--revision"], {"help":"specify the revision number"}) BASEDIR_OPT = (["-b", "--base-dir"], {}) @@ -42,61 +50,67 @@ "action": "store_true", "default": False }) +VCS_OPT = (["--vcs"], {"help":"specify the version control system"}) + +VCS_OPT_ERROR = _("You must specify a version control system using the --vcs [svn|git] option") #: Maps statuses to emblems. -#: TODO: should probably be possible to create this dynamically STATUS_EMBLEMS = { - "added" : "rabbitvcs-added", - "deleted": "rabbitvcs-deleted", - "removed": "rabbitvcs-deleted", - "modified": "rabbitvcs-modified", - "conflicted": "rabbitvcs-conflicted", - "missing": "rabbitvcs-conflicted", - "normal": "rabbitvcs-normal", - "clean": "rabbitvcs-normal", - "ignored": "rabbitvcs-ignored", - "locked": "rabbitvcs-locked", - "read_only": "rabbitvcs-read_only", - "obstructed": "rabbitvcs-obstructed", - "incomplete": "rabbitvcs-incomplete", - "unversioned": "rabbitvcs-unversioned", - "unknown": "rabbitvcs-unknown", - "calculating": "rabbitvcs-calculating", - "error": "rabbitvcs-error" + rabbitvcs.vcs.status.status_normal : "rabbitvcs-normal", + rabbitvcs.vcs.status.status_modified : "rabbitvcs-modified", + rabbitvcs.vcs.status.status_added : "rabbitvcs-added", + rabbitvcs.vcs.status.status_deleted : "rabbitvcs-deleted", + rabbitvcs.vcs.status.status_ignored :"rabbitvcs-ignored", + rabbitvcs.vcs.status.status_read_only : "rabbitvcs-locked", + rabbitvcs.vcs.status.status_locked : "rabbitvcs-locked", + rabbitvcs.vcs.status.status_unknown : "rabbitvcs-unknown", + rabbitvcs.vcs.status.status_missing : "rabbitvcs-complicated", + rabbitvcs.vcs.status.status_replaced : "rabbitvcs-modified", + rabbitvcs.vcs.status.status_complicated : "rabbitvcs-complicated", + rabbitvcs.vcs.status.status_calculating : "rabbitvcs-calculating", + rabbitvcs.vcs.status.status_error : "rabbitvcs-error", + rabbitvcs.vcs.status.status_unversioned : "rabbitvcs-unversioned" } -def get_glade_tree(filename, id): - path = "%s/glade/%s.glade" % ( +class GtkBuilderWidgetWrapper: + + def __init__(self, gtkbuilder_filename = None, + gtkbuilder_id = None, claim_domain=True): + if gtkbuilder_filename: + self.gtkbuilder_filename = gtkbuilder_filename + + if gtkbuilder_id: + self.gtkbuilder_id = gtkbuilder_id + + self.claim_domain = claim_domain + + self.tree = self.get_tree() + self.tree.connect_signals(self) + + def get_tree(self): + path = "%s/xml/%s.xml" % ( os.path.dirname(os.path.realpath(__file__)), - filename + self.gtkbuilder_filename ) - gtk.glade.bindtextdomain(APP_NAME, LOCALE_DIR) - gtk.glade.textdomain(APP_NAME) - tree = gtk.glade.XML(path, id, APP_NAME) - return tree + + tree = gtk.Builder() + tree.add_from_file(path) -class GladeWidgetWrapper: - - def __init__(self, glade_filename = None, glade_id = None): - if glade_filename: - self.glade_filename = glade_filename + if self.claim_domain: + tree.set_translation_domain(APP_NAME) - if glade_id: - self.glade_id = glade_id - - self.tree = get_glade_tree(self.glade_filename, self.glade_id) - self.tree.signal_autoconnect(self) + return tree def get_widget(self, id = None): if not id: - id = self.glade_id + id = self.gtkbuilder_id - return self.tree.get_widget(id) + return self.tree.get_object(id) -class InterfaceView(GladeWidgetWrapper): +class InterfaceView(GtkBuilderWidgetWrapper): """ Every ui window should inherit this class and send it the "self" - variable, the glade filename (without the extension), and the id of the + variable, the gtkbuilder filename (without the extension), and the id of the main window widget. When calling from the __main__ area (i.e. a window is opened via CLI, @@ -106,28 +120,39 @@ """ def __init__(self, *args, **kwargs): - GladeWidgetWrapper.__init__(self, *args, **kwargs) + GtkBuilderWidgetWrapper.__init__(self, *args, **kwargs) self.do_gtk_quit = False def hide(self): - self.get_widget(self.glade_id).set_property('visible', False) + window = self.get_widget(self.gtkbuilder_id) + if window: + window.set_property('visible', False) def show(self): - self.get_widget(self.glade_id).set_property('visible', True) + window = self.get_widget(self.gtkbuilder_id) + if window: + window.set_property('visible', True) def destroy(self): - window = self.get_widget(self.glade_id) + self.close() + + def close(self, threaded=False): + window = self.get_widget(self.gtkbuilder_id) if window is not None: + if threaded: + gtk.gdk.threads_enter() + window.destroy() - - def close(self): - self.destroy() + + if threaded: + gtk.gdk.threads_leave() + if self.do_gtk_quit: gtk.main_quit() def register_gtk_quit(self): - window = self.get_widget(self.glade_id) + window = self.get_widget(self.gtkbuilder_id) self.do_gtk_quit = True # This means we've already been closed @@ -148,8 +173,10 @@ self.do_gtk_quit = False def close(self): - if self.do_gtk_quit: + try: gtk.main_quit() + except RuntimeError: + raise SystemExit() def register_gtk_quit(self): self.do_gtk_quit = True @@ -157,11 +184,18 @@ def gtk_quit_is_set(self): return self.do_gtk_quit +class VCSNotSupportedError(Exception): + """Indicates the desired VCS is not valid for a given action""" + + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + + def main(allowed_options=None, description=None, usage=None): from os import getcwd from sys import argv from optparse import OptionParser - from rabbitvcs.lib.helper import get_common_directory + from rabbitvcs.util.helper import get_common_directory parser = OptionParser(usage=usage, description=description) diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/lock.py rabbitvcs-0.15.0.5/rabbitvcs/ui/lock.py --- rabbitvcs-0.13.1/rabbitvcs/ui/lock.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/lock.py 2010-12-28 16:06:11.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,14 +28,13 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.action import VCSAction -from rabbitvcs.lib.contextmenu import GtkFilesContextMenu, GtkContextMenuCaller -from rabbitvcs.ui.log import LogDialog +from rabbitvcs.ui.action import SVNAction +from rabbitvcs.util.contextmenu import GtkFilesContextMenu, GtkContextMenuCaller import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib.vcs -import rabbitvcs.lib.helper -from rabbitvcs.lib.log import Log +import rabbitvcs.vcs +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.lock") @@ -44,14 +43,12 @@ gtk.gdk.threads_init() -class Lock(InterfaceView, GtkContextMenuCaller): +class SVNLock(InterfaceView, GtkContextMenuCaller): """ Provides an interface to lock any number of files in a working copy. """ - TOGGLE_ALL = False - def __init__(self, paths, base_dir): """ @type: paths: list @@ -63,7 +60,8 @@ self.paths = paths self.base_dir = base_dir - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() self.files_table = rabbitvcs.ui.widget.Table( self.get_widget("files_table"), @@ -94,12 +92,10 @@ # Helper functions # - def reload_treeview(self): + # Overrides the GtkContextMenuCaller method + def on_context_menu_command_finished(self): self.initialize_items() - def reload_treeview_threaded(self): - self.load() - def initialize_items(self): """ Initializes the activated cache and loads the file items in a new thread @@ -122,15 +118,15 @@ for item in self.items: locked = "" - if self.vcs.is_locked(item.path): + if self.svn.is_locked(item.path): locked = _("Yes") - if not self.vcs.is_versioned(item.path): + if not self.svn.is_versioned(item.path): continue self.files_table.append([ - False, + True, item.path, - rabbitvcs.lib.helper.get_file_extension(item.path), + rabbitvcs.util.helper.get_file_extension(item.path), locked ]) @@ -159,17 +155,17 @@ self.hide() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Get Lock")) self.action.append(self.action.set_status, _("Running Lock Command...")) - self.action.append(rabbitvcs.lib.helper.save_log_message, message) + self.action.append(rabbitvcs.util.helper.save_log_message, message) for path in items: self.action.append( - self.vcs.lock, + self.svn.lock, path, message, force=steal_locks @@ -183,16 +179,23 @@ self.show_files_table_popup_menu(treeview, data) def on_select_all_toggled(self, widget, data=None): - self.TOGGLE_ALL = not self.TOGGLE_ALL for row in self.files_table.get_items(): - row[0] = self.TOGGLE_ALL + row[0] = self.get_widget("select_all").get_active() def on_previous_messages_clicked(self, widget, data=None): dialog = rabbitvcs.ui.dialog.PreviousMessages() message = dialog.run() if message is not None: self.message.set_text(message) - + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNLock +} + +def lock_factory(paths, base_dir): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths, base_dir) + if __name__ == "__main__": from rabbitvcs.ui import main, BASEDIR_OPT (options, paths) = main( @@ -200,6 +203,6 @@ usage="Usage: rabbitvcs lock [path1] [path2] ..." ) - window = Lock(paths, options.base_dir) + window = lock_factory(paths, options.base_dir) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/log.py rabbitvcs-0.15.0.5/rabbitvcs/ui/log.py --- rabbitvcs-0.13.1/rabbitvcs/ui/log.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/log.py 2011-06-11 17:53:50.000000000 +0000 @@ -1,10 +1,10 @@ -#a +# # This is an extension to the Nautilus file manager to allow better # integration with the Subversion source control system. # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,21 +28,73 @@ import pygtk import gobject import gtk +import cgi from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.action import SVNAction, GitAction, vcs_action_factory from rabbitvcs.ui.dialog import MessageBox -from rabbitvcs.lib.contextmenu import GtkContextMenu -from rabbitvcs.lib.contextmenuitems import * +from rabbitvcs.util.contextmenu import GtkContextMenu +from rabbitvcs.util.contextmenuitems import * import rabbitvcs.ui.widget -import rabbitvcs.lib.helper -import rabbitvcs.lib.vcs -from rabbitvcs.lib.decorators import gtk_unsafe +import rabbitvcs.util.helper +import rabbitvcs.vcs +from rabbitvcs.util.decorators import gtk_unsafe from rabbitvcs import gettext _ = gettext.gettext -DATETIME_FORMAT = rabbitvcs.lib.helper.LOCAL_DATETIME_FORMAT +DATETIME_FORMAT = rabbitvcs.util.helper.LOCAL_DATETIME_FORMAT + +REVISION_LABEL = _("Revision") + +def revision_grapher(history): + """ + Expects a list of revision items like so: + [ + item.commit = "..." + item.parents = ["...", "..."] + ] + + Output can be put directly into the CellRendererGraph + """ + items = [] + revisions = [] + last_lines = [] + color = "#d3b9d3" + for item in history: + commit = unicode(item.revision) + parents = [] + for parent in item.parents: + parents.append(unicode(parent)) + + if commit not in revisions: + revisions.append(commit) + + index = revisions.index(commit) + next_revisions = revisions[:] + + parents_to_add = [] + for parent in parents: + if parent not in next_revisions: + parents_to_add.append(parent) + + next_revisions[index:index+1] = parents_to_add + + lines = [] + for i, revision in enumerate(revisions): + if revision in next_revisions: + lines.append((i, next_revisions.index(revision), color)) + elif revision == commit: + for parent in parents: + lines.append((i, next_revisions.index(parent), color)) + + node = (index, "#a9f9d2") + + items.append((item, node, last_lines, lines)) + revisions = next_revisions + last_lines = lines + + return items class Log(InterfaceView): """ @@ -66,48 +118,26 @@ InterfaceView.__init__(self, "log", "Log") self.get_widget("Log").set_title(_("Log - %s") % path) - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - + self.vcs = rabbitvcs.vcs.VCS() + self.path = path self.cache = LogCache() + self.rev_first = None self.rev_start = None + self.rev_end = None self.rev_max = 1 self.previous_starts = [] self.initialize_revision_labels() - + self.revision_number_column = 0 + self.head_row = 0 self.get_widget("limit").set_text(str(self.limit)) - - self.revisions_table = rabbitvcs.ui.widget.Table( - self.get_widget("revisions_table"), - [gobject.TYPE_STRING, gobject.TYPE_STRING, - gobject.TYPE_STRING, gobject.TYPE_STRING], - [_("Revision"), _("Author"), - _("Date"), _("Message")], - callbacks={ - "mouse-event": self.on_revisions_table_mouse_event - } - ) - - self.paths_table = rabbitvcs.ui.widget.Table( - self.get_widget("paths_table"), - [gobject.TYPE_STRING, gobject.TYPE_STRING, - gobject.TYPE_STRING, gobject.TYPE_STRING], - [_("Action"), _("Path"), - _("Copy From Path"), _("Copy From Revision")], - callbacks={ - "mouse-event": self.on_paths_table_mouse_event, - "row-activated": self.on_paths_table_row_activated - } - ) self.message = rabbitvcs.ui.widget.TextView( self.get_widget("message") ) self.stop_on_copy = False - self.root_url = self.vcs.get_repo_root_url(self.path) - self.load_or_refresh() # # UI Signal Callback Methods @@ -123,20 +153,6 @@ self.set_loading(False) self.close() - - def on_previous_clicked(self, widget): - self.rev_start = self.previous_starts.pop() - self.load_or_refresh() - - def on_next_clicked(self, widget): - self.override_limit = True - self.previous_starts.append(self.rev_start) - self.rev_start = self.rev_end - 1 - - if self.rev_start < 1: - self.rev_start = 1 - - self.load_or_refresh() def on_stop_on_copy_toggled(self, widget): self.stop_on_copy = self.get_widget("stop_on_copy").get_active() @@ -154,7 +170,7 @@ def on_revisions_table_row_activated(self, treeview, event, col): paths = self.revisions_table.get_selected_row_items(1) - rabbitvcs.lib.helper.launch_diff_tool(*paths) + rabbitvcs.util.helper.launch_diff_tool(*paths) def on_revisions_table_mouse_event(self, treeview, data=None): if len(self.revisions_table.get_selected_rows()) == 0: @@ -165,63 +181,58 @@ if data is not None and data.button == 3: self.show_revisions_table_popup_menu(treeview, data) - item = self.revision_items[self.revisions_table.get_selected_rows()[0]] - self.paths_table.clear() - if len(self.revisions_table.get_selected_rows()) == 1: - self.message.set_text(item.message) - - if item.changed_paths is not None: - for subitem in item.changed_paths: - - copyfrom_rev = "" - if hasattr(subitem.copyfrom_revision, "number"): - copyfrom_rev = subitem.copyfrom_revision.number - - self.paths_table.append([ - subitem.action, - subitem.path, - subitem.copyfrom_path, - copyfrom_rev - ]) - - else: - self.message.set_text("") + self.message.set_text("") + + self.update_revision_message() - def show_revisions_table_popup_menu(self, treeview, data): - revisions = [] - for row in self.revisions_table.get_selected_rows(): - revisions.append({ - "revision": self.vcs.revision("number", number=self.revision_items[row].revision.number), - "author": self.revision_items[row].author, - "message": self.revision_items[row].message - }) - - LogTopContextMenu(self, data, self.path, revisions).show() # # Paths table callbacks # def on_paths_table_row_activated(self, treeview, data=None, col=None): - rev_item = self.revision_items[self.revisions_table.get_selected_rows()[0]] - path_item = self.paths_table.get_row(self.paths_table.get_selected_rows()[0])[1] - url = self.root_url + path_item - self.view_diff_for_path(url, rev_item.revision.number) + try: + revision1 = unicode(self.revision_items[self.revisions_table.get_selected_rows()[0]].revision) + revision2 = unicode(self.revision_items[self.revisions_table.get_selected_rows()[0]+1].revision) + path_item = self.paths_table.get_row(self.paths_table.get_selected_rows()[0])[1] + url = self.root_url + path_item + self.view_diff_for_path(url, unicode(revision1), unicode(revision2), sidebyside=True) + except IndexError: + pass def on_paths_table_mouse_event(self, treeview, data=None): if data is not None and data.button == 3: self.show_paths_table_popup_menu(treeview, data) - + def show_paths_table_popup_menu(self, treeview, data): - rev_item = self.revision_items[self.revisions_table.get_selected_rows()[0]] - revision_obj = self.vcs.revision("number", number=rev_item.revision.number) + revisions = [] + for row in self.revisions_table.get_selected_rows(): + line = { + "revision": self.revision_items[row].revision, + "author": self.revision_items[row].author, + "message": self.revision_items[row].message, + "parents": self.revision_items[row].parents + } + try: + line["next_revision"] = self.revision_items[row+1].revision + except IndexError,e: + pass + + try: + line["previous_revision"] = self.revision_items[row-1].revision + except IndexError,e: + pass + + revisions.append(line) + + revisions.reverse() paths = [] for row in self.paths_table.get_selected_rows(): paths.append(self.paths_table.get_row(row)[1]) - - LogBottomContextMenu(self, data, paths, revision_obj).show() + + LogBottomContextMenu(self, data, paths, revisions).show() # # Helper methods @@ -239,29 +250,16 @@ revisions = [] for row in self.revisions_table.get_selected_rows(): - revisions.append(int(self.revisions_table.get_row(row)[0])) + revisions.append(int(self.revisions_table.get_row(row)[self.revision_number_column])) revisions.sort() - return rabbitvcs.lib.helper.encode_revisions(revisions) + return rabbitvcs.util.helper.encode_revisions(revisions) def get_selected_revision_number(self): if len(self.revisions_table.get_selected_rows()): - return self.revisions_table.get_row(self.revisions_table.get_selected_rows()[0])[0] + return self.revisions_table.get_row(self.revisions_table.get_selected_rows()[0])[self.revision_number_column] else: return "" - - def check_previous_sensitive(self): - sensitive = (self.rev_start < self.rev_max) - self.get_widget("previous").set_sensitive(sensitive) - - def check_next_sensitive(self): - sensitive = True - if self.rev_end == 1: - sensitive = False - if len(self.revision_items) <= self.limit: - sensitive = False - - self.get_widget("next").set_sensitive(sensitive) def set_start_revision(self, rev): self.get_widget("start").set_text(str(rev)) @@ -273,6 +271,107 @@ self.set_start_revision(_("N/A")) self.set_end_revision(_("N/A")) + def set_loading(self, loading): + self.is_loading = loading + + def show_revisions_table_popup_menu(self, treeview, data): + revisions = [] + for row in self.revisions_table.get_selected_rows(): + line = { + "revision": self.revision_items[row].revision, + "author": self.revision_items[row].author, + "message": self.revision_items[row].message + } + try: + line["next_revision"] = self.revision_items[row+1].revision + except IndexError,e: + pass + + try: + line["previous_revision"] = self.revision_items[row-1].revision + except IndexError,e: + pass + + revisions.append(line) + + LogTopContextMenu(self, data, self.path, revisions).show() + + # + # Other helper methods + # + + def view_diff_for_path(self, url, revision1, revision2=None, sidebyside=False): + if revision2 == None: + revision2 = revision1 + + options = [ + "%s@%s" % (url, revision2), + "%s@%s" % (url, revision1), + "--vcs=%s" % self.get_vcs_name() + ] + + if sidebyside: + options += ["-s"] + + rabbitvcs.util.helper.launch_ui_window("diff", options) + + def get_vcs_name(self): + vcs = rabbitvcs.vcs.VCS_DUMMY + if hasattr(self, "svn"): + vcs = rabbitvcs.vcs.VCS_SVN + elif hasattr(self, "git"): + vcs = rabbitvcs.vcs.VCS_GIT + + return vcs + +class SVNLog(Log): + def __init__(self, path): + Log.__init__(self, path) + + self.svn = self.vcs.svn() + + self.revisions_table = rabbitvcs.ui.widget.Table( + self.get_widget("revisions_table"), + [gobject.TYPE_STRING, gobject.TYPE_STRING, + gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Revision"), _("Author"), + _("Date"), _("Message")], + callbacks={ + "mouse-event": self.on_revisions_table_mouse_event + } + ) + + self.paths_table = rabbitvcs.ui.widget.Table( + self.get_widget("paths_table"), + [gobject.TYPE_STRING, gobject.TYPE_STRING, + gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Action"), _("Path"), + _("Copy From Path"), _("Copy From Revision")], + callbacks={ + "mouse-event": self.on_paths_table_mouse_event, + "row-activated": self.on_paths_table_row_activated + }, + flags={ + "sortable": True, + "sort_on": 1 + } + ) + + self.initialize_root_url() + self.load_or_refresh() + + def initialize_root_url(self): + action = SVNAction( + self.svn, + notification=False, + run_in_thread=False + ) + + self.root_url = action.run_single( + self.svn.get_repo_root_url, + self.path + ) + # # Log-loading callback methods # @@ -293,10 +392,16 @@ else: # Make sure the int passed is the order the log call was made self.revision_items = self.action.get_result(0) + + if not self.revision_items or len(self.revision_items) == 0: + return # Get the starting/ending point from the actual returned revisions - self.rev_start = self.revision_items[0].revision.number - self.rev_end = self.revision_items[-1].revision.number + self.rev_start = unicode(self.revision_items[0].revision) + self.rev_end = unicode(self.revision_items[-1].revision) + + if not self.rev_first: + self.rev_first = self.rev_start self.cache.set(self.rev_start, self.revision_items) @@ -309,16 +414,12 @@ self.set_end_revision(self.rev_end) for item in self.revision_items: - msg = rabbitvcs.lib.helper.format_long_text(item.message, 80) - - author = _("(no author)") - if hasattr(item, "author"): - author = item.author + msg = cgi.escape(rabbitvcs.util.helper.format_long_text(item.message, 80)) self.revisions_table.append([ - item.revision.number, - author, - datetime.fromtimestamp(item.date).strftime(DATETIME_FORMAT), + unicode(item.revision), + item.author, + rabbitvcs.util.helper.format_datetime(item.date), msg ]) @@ -326,7 +427,7 @@ # so the user can look at the item that was copied if self.stop_on_copy: for path in item.changed_paths: - if path.copyfrom_path is not None: + if path.copy_from_path or path.copy_from_revision: return self.check_previous_sensitive() @@ -335,18 +436,18 @@ def load(self): self.set_loading(True) - - self.action = VCSAction( - self.vcs, + + self.action = SVNAction( + self.svn, notification=False ) - start = self.vcs.revision("head") + start = self.svn.revision("head") if self.rev_start: - start = self.vcs.revision("number", number=self.rev_start) + start = self.svn.revision("number", number=self.rev_start) self.action.append( - self.vcs.log, + self.svn.log, self.path, revision_start=start, limit=self.limit+1, @@ -355,49 +456,24 @@ self.action.append(self.refresh) self.action.start() - def set_loading(self, loading): - self.is_loading = loading - - - # - # Other helper methods - # - - def view_diff_for_path(self, url, revision_number, sidebyside=False): - from rabbitvcs.ui.diff import SVNDiff - - self.action = VCSAction( - self.vcs, - notification=False - ) - self.action.append( - SVNDiff, - url, - revision_number-1, - url, - revision_number, - sidebyside=sidebyside - ) - self.action.start() - def edit_revprop(self, prop_name, prop_value, callback=None): failure = False - url = self.vcs.get_repo_url(self.path) + url = self.svn.get_repo_url(self.path) - self.action = VCSAction( - self.vcs, + self.action = SVNAction( + self.svn, notification=False ) for row in self.revisions_table.get_selected_rows(): item = self.revision_items[row] self.action.append( - self.vcs.revpropset, + self.svn.revpropset, prop_name, prop_value, url, - self.vcs.revision("number", item.revision.number) + item.revision ) callback(row, prop_value) @@ -413,14 +489,279 @@ self.revision_items[index].author = val self.revisions_table.set_row_item(index, 1, val) -class LogDialog(Log): + def update_revision_message(self): + combined_paths = [] + subitems = [] + + for selected_row in self.revisions_table.get_selected_rows(): + item = self.revision_items[selected_row] + + if len(self.revisions_table.get_selected_rows()) == 1: + self.message.set_text(item.message) + else: + indented_message = item.message.replace("\n","\n\t") + self.message.append_text( + "%s %s:\n\t%s\n" % (REVISION_LABEL, + unicode(item.revision), + indented_message)) + if item.changed_paths is not None: + for subitem in item.changed_paths: + if subitem.path not in combined_paths: + combined_paths.append(subitem.path) + + subitems.append([ + subitem.action, + subitem.path, + subitem.copy_from_path, + subitem.copy_from_revision + ]) + + subitems.sort(lambda x, y: cmp(x[1],y[1])) + for subitem in subitems: + self.paths_table.append([ + subitem[0], + subitem[1], + subitem[2], + subitem[3] + ]) + + def on_previous_clicked(self, widget): + self.rev_start = self.previous_starts.pop() + self.load_or_refresh() + + def on_next_clicked(self, widget): + self.previous_starts.append(self.rev_start) + self.rev_start = self.rev_end - 1 + + if self.rev_start < 1: + self.rev_start = 1 + + self.load_or_refresh() + + def check_previous_sensitive(self): + sensitive = (self.rev_start < self.rev_max) + self.get_widget("previous").set_sensitive(sensitive) + + def check_next_sensitive(self): + sensitive = True + if self.rev_end == 1: + sensitive = False + if len(self.revision_items) <= self.limit: + sensitive = False + + self.get_widget("next").set_sensitive(sensitive) + +class GitLog(Log): + def __init__(self, path): + Log.__init__(self, path) + + self.git = self.vcs.git(path) + self.limit = 500 + + self.get_widget("stop_on_copy").hide() + + self.revision_number_column = 1 + + self.revisions_table = rabbitvcs.ui.widget.Table( + self.get_widget("revisions_table"), + [rabbitvcs.ui.widget.TYPE_GRAPH, gobject.TYPE_STRING, + rabbitvcs.ui.widget.TYPE_MARKUP, + rabbitvcs.ui.widget.TYPE_MARKUP, rabbitvcs.ui.widget.TYPE_MARKUP], + [_("Graph"), _("Revision"), _("Author"), + _("Date"), _("Message")], + filters=[{ + "callback": rabbitvcs.ui.widget.git_revision_filter, + "user_data": { + "column": 1 + } + }], + callbacks={ + "mouse-event": self.on_revisions_table_mouse_event + } + ) + + self.paths_table = rabbitvcs.ui.widget.Table( + self.get_widget("paths_table"), + [gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Action"), _("Path")], + callbacks={ + "mouse-event": self.on_paths_table_mouse_event, + "row-activated": self.on_paths_table_row_activated + }, + flags={ + "sortable": True, + "sort_on": 1 + } + ) + self.start_point = 0 + self.initialize_root_url() + self.load_or_refresh() + + # + # Log-loading callback methods + # + + def refresh(self): + """ + Refresh the items in the main log table that shows Revision/Author/etc. + + """ + + self.revisions_table.clear() + self.message.set_text("") + self.paths_table.clear() + + # Make sure the int passed is the order the log call was made + self.revision_items = self.action.get_result(0) + + if not self.revision_items or len(self.revision_items) == 0: + return + + self.set_start_revision(self.revision_items[0].revision.short()) + self.set_end_revision(self.revision_items[-1].revision.short()) + + grapher = revision_grapher(self.revision_items) + max_columns = 1 + for (item, node, in_lines, out_lines) in grapher: + if max_columns < len(out_lines): + max_columns = len(out_lines) + + graph_column = self.revisions_table.get_column(0) + cell = graph_column.get_cell_renderers()[0] + self.revisions_table.set_column_width(0, 16*max_columns) + + index = 0 + for (item, node, in_lines, out_lines) in grapher: + revision = unicode(item.revision) + msg = cgi.escape(rabbitvcs.util.helper.format_long_text(item.message, 80)) + author = item.author + date = rabbitvcs.util.helper.format_datetime(item.date) + + if item.head: + self.head_row = index + msg = "%s" % msg + author = "%s" % author + date = "%s" % date + + self.revisions_table.append([ + (node, in_lines, out_lines), + revision, + author, + date, + msg + ]) + + index += 1 + + self.check_previous_sensitive() + self.check_next_sensitive() + self.set_loading(False) + + def load(self): + self.set_loading(True) + + self.action = GitAction( + self.git, + notification=False, + run_in_thread=True + ) + + self.action.append( + self.git.log, + path=self.path, + skip=self.start_point, + limit=self.limit+1 + ) + self.action.append(self.refresh) + self.action.start() + + def update_revision_message(self): + combined_paths = [] + subitems = [] + + for selected_row in self.revisions_table.get_selected_rows(): + item = self.revision_items[selected_row] + + if len(self.revisions_table.get_selected_rows()) == 1: + self.message.set_text(item.message) + else: + indented_message = item.message.replace("\n","\n\t") + self.message.append_text( + "%s %s:\n\t%s\n" % (REVISION_LABEL, + item.revision.short(), + indented_message)) + + for subitem in item.changed_paths: + + if subitem.path not in combined_paths: + combined_paths.append(subitem.path) + + subitems.append([ + subitem.action, + subitem.path + ]) + + subitems.sort(lambda x, y: cmp(x[1],y[1])) + for subitem in subitems: + self.paths_table.append([ + subitem[0], + subitem[1] + ]) + + def on_previous_clicked(self, widget): + self.start_point -= self.limit + if self.start_point < 0: + self.start_point = 0 + self.load_or_refresh() + + def on_next_clicked(self, widget): + self.start_point += self.limit + self.load() + + def check_previous_sensitive(self): + sensitive = (self.start_point > 0) + self.get_widget("previous").set_sensitive(sensitive) + + def check_next_sensitive(self): + sensitive = True + if len(self.revision_items) <= self.limit: + sensitive = False + + self.get_widget("next").set_sensitive(sensitive) + + def initialize_root_url(self): + self.root_url = self.git.get_repository() + "/" + +class SVNLogDialog(SVNLog): def __init__(self, path, ok_callback=None, multiple=False): """ - Override the normal Log class so that we can hide the window as we need. + Override the normal SVNLog class so that we can hide the window as we need. Also, provide a callback for when the OK button is clicked so that we can get some desired data. """ - Log.__init__(self, path) + SVNLog.__init__(self, path) + self.ok_callback = ok_callback + self.multiple = multiple + + def on_destroy(self, widget): + pass + + def on_close_clicked(self, widget, data=None): + self.hide() + if self.ok_callback is not None: + if self.multiple == True: + self.ok_callback(self.get_selected_revision_numbers()) + else: + self.ok_callback(self.get_selected_revision_number()) + +class GitLogDialog(GitLog): + def __init__(self, path, ok_callback=None, multiple=False): + """ + Override the normal GitLog class so that we can hide the window as we need. + Also, provide a callback for when the OK button is clicked so that we + can get some desired data. + """ + GitLog.__init__(self, path) self.ok_callback = ok_callback self.multiple = multiple @@ -457,41 +798,49 @@ label = _("View diff against working copy") icon = "rabbitvcs-diff" -class MenuCompareWorkingCopy(MenuItem): - identifier = "RabbitVCS::Compare_Working_Copy" - label = _("Compare with working copy") - icon = "rabbitvcs-compare" - class MenuViewDiffPreviousRevision(MenuItem): identifier = "RabbitVCS::View_Diff_Previous_Revision" label = _("View diff against previous revision") icon = "rabbitvcs-diff" -class MenuComparePreviousRevision(MenuItem): - identifier = "RabbitVCS::Compare_Previous_Revision" - label = _("Compare with previous revision") - icon = "rabbitvcs-compare" - class MenuViewDiffRevisions(MenuItem): identifier = "RabbitVCS::View_Diff_Revisions" label = _("View diff between revisions") icon = "rabbitvcs-diff" +class MenuCompareWorkingCopy(MenuItem): + identifier = "RabbitVCS::Compare_Working_Copy" + label = _("Compare with working copy") + icon = "rabbitvcs-compare" + +class MenuComparePreviousRevision(MenuItem): + identifier = "RabbitVCS::Compare_Previous_Revision" + label = _("Compare with previous revision") + icon = "rabbitvcs-compare" + class MenuCompareRevisions(MenuItem): identifier = "RabbitVCS::Compare_Revisions" label = _("Compare revisions") icon = "rabbitvcs-compare" class MenuShowChangesPreviousRevision(MenuItem): + # This is for the revs list identifier = "RabbitVCS::Show_Changes_Previous_Revision" - label = _("Show changes from previous revision") + label = _("Show changes against previous revision") icon = "rabbitvcs-changes" - + class MenuShowChangesRevisions(MenuItem): + # This is for the revs list identifier = "RabbitVCS::Show_Changes_Revisions" label = _("Show changes between revisions") icon = "rabbitvcs-changes" +class MenuUpdateToThisRevision(MenuItem): + identifier = "RabbitVCS::Update_To_This_Revision" + label = _("Update to this revision") + tooltip = _("Update the selected path to this revision") + icon = "rabbitvcs-update" + class MenuEditAuthor(MenuItem): identifier = "RabbitVCS::Edit_Author" label = _("Edit author...") @@ -509,198 +858,257 @@ label = _("Edit revision properties...") icon = gtk.STOCK_EDIT +class MenuSeparatorLast(MenuSeparator): + identifier = "RabbitVCS::Separator_Last" + class LogTopContextMenuConditions: - def __init__(self, vcs_client, path, revisions): - self.vcs_client = vcs_client + def __init__(self, caller, vcs, path, revisions): + self.caller = caller + self.vcs = vcs self.path = path self.revisions = revisions - def view_diff_working_copy(self, data=None): - return (len(self.revisions) == 1) + self.vcs_name = caller.get_vcs_name() - def compare_working_copy(self, data=None): - return (len(self.revisions) == 1) + def view_diff_working_copy(self, data=None): + return (self.vcs.is_in_a_or_a_working_copy(self.path) and len(self.revisions) == 1) def view_diff_previous_revision(self, data=None): item = self.revisions[0]["revision"] - return (item.value > 1 and len(self.revisions) == 1) + return ("previous_revision" in self.revisions[0] and len(self.revisions) == 1) + + def view_diff_revisions(self, data=None): + return (len(self.revisions) > 1) + + def compare_working_copy(self, data=None): + return (self.vcs.is_in_a_or_a_working_copy(self.path) and len(self.revisions) == 1) def compare_previous_revision(self, data=None): item = self.revisions[0]["revision"] - return (item.value > 1 and len(self.revisions) == 1) - - def view_diff_revisions(self, data=None): - return (len(self.revisions) == 2) + return ("previous_revision" in self.revisions[0] and len(self.revisions) == 1) def compare_revisions(self, data=None): - return (len(self.revisions) == 2) + return (len(self.revisions) > 1) + + def show_changes_previous_revision(self, data=None): + item = self.revisions[0]["revision"] + return ("previous_revision" in self.revisions[0] and len(self.revisions) == 1) def show_changes_revisions(self, data=None): - return (len(self.revisions) == 2) + return (len(self.revisions) > 1) - def update_to(self, data=None): - return (len(self.revisions) == 1) + def update_to_this_revision(self, data=None): + return (self.vcs_name == rabbitvcs.vcs.VCS_SVN and len(self.revisions) == 1) def checkout(self, data=None): return (len(self.revisions) == 1) + def branches(self, data=None): + return (len(self.revisions) == 1 and self.vcs_name == rabbitvcs.vcs.VCS_GIT) + + def tags(self, data=None): + return (len(self.revisions) == 1 and self.vcs_name == rabbitvcs.vcs.VCS_GIT) + def branch_tag(self, data=None): - return (len(self.revisions) == 1) + return (self.vcs_name == rabbitvcs.vcs.VCS_SVN and len(self.revisions) == 1) def export(self, data=None): return (len(self.revisions) == 1) def edit_author(self, data=None): - return True + return self.vcs_name == rabbitvcs.vcs.VCS_SVN def edit_log_message(self, data=None): - return True + return self.vcs_name == rabbitvcs.vcs.VCS_SVN def edit_revision_properties(self, data=None): - return (len(self.revisions) == 1) + return (self.vcs_name == rabbitvcs.vcs.VCS_SVN and len(self.revisions) == 1) def separator(self, data=None): return True + def separator_last(self, data=None): + return (self.vcs_name == rabbitvcs.vcs.VCS_SVN) + + def merge(self, data=None): + return (self.vcs_name == rabbitvcs.vcs.VCS_GIT) + + def reset(self, data=None): + return (self.vcs_name == rabbitvcs.vcs.VCS_GIT) + class LogTopContextMenuCallbacks: - def __init__(self, caller, vcs_client, path, revisions): + def __init__(self, caller, vcs, path, revisions): self.caller = caller - self.vcs_client = vcs_client + self.vcs = vcs self.path = path self.revisions = revisions + + self.vcs_name = self.caller.get_vcs_name() def view_diff_working_copy(self, widget, data=None): - from rabbitvcs.ui.diff import SVNDiff - self.action = VCSAction( - self.vcs_client, - notification=False - ) - self.action.append( - SVNDiff, - self.path, - self.revisions[0]["revision"] - ) - self.action.start() - - def compare_working_copy(self, widget, data=None): - from rabbitvcs.ui.diff import SVNDiff - self.action = VCSAction( - self.vcs_client, - notification=False - ) - self.action.append( - SVNDiff, - self.vcs_client.get_repo_url(self.path), - self.revisions[0]["revision"], - self.path, - sidebyside=True - ) - self.action.start() + rabbitvcs.util.helper.launch_ui_window("diff", [ + "%s@%s" % (self.path, unicode(self.revisions[0]["revision"])), + "--vcs=%s" % self.caller.get_vcs_name() + ]) def view_diff_previous_revision(self, widget, data=None): - from rabbitvcs.ui.diff import SVNDiff + if len(self.revisions[0]["parents"]) > 0: + parent = unicode(self.revisions[0]["parents"][0]) + else: + parent = unicode(self.revisions[0]["next_revision"]) - item = self.revisions[0]["revision"] - self.action = VCSAction( - self.vcs_client, - notification=False - ) - self.action.append( - SVNDiff, - self.path, - item.value-1, - self.path, - item.value - ) - self.action.start() + rabbitvcs.util.helper.launch_ui_window("diff", [ + "%s@%s" % (self.path, parent), + "%s@%s" % (self.path, unicode(self.revisions[0]["revision"])), + "--vcs=%s" % self.caller.get_vcs_name() + ]) + + def view_diff_revisions(self, widget, data=None): + path_older = self.path + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + path_older = self.vcs.svn().get_repo_url(self.path) + + rabbitvcs.util.helper.launch_ui_window("diff", [ + "%s@%s" % (path_older, self.revisions[1]["revision"].value), + "%s@%s" % (self.path, unicode(self.revisions[0]["revision"])), + "--vcs=%s" % self.caller.get_vcs_name() + ]) + + def compare_working_copy(self, widget, data=None): + path_older = self.path + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + path_older = self.vcs.svn().get_repo_url(self.path) + + rabbitvcs.util.helper.launch_ui_window("diff", [ + "-s", + "%s@%s" % (path_older, unicode(self.revisions[0]["revision"])), + "%s" % (self.path), + "--vcs=%s" % self.caller.get_vcs_name() + ]) def compare_previous_revision(self, widget, data=None): - from rabbitvcs.ui.diff import SVNDiff + if len(self.revisions[0]["parents"]) > 0: + parent = unicode(self.revisions[0]["parents"][0]) + else: + parent = unicode(self.revisions[0]["next_revision"]) - url = self.vcs_client.get_repo_url(self.path) - item = self.revisions[0]["revision"] - self.action = VCSAction( - self.vcs_client, - notification=False - ) - self.action.append( - SVNDiff, - url, - item.value-1, - url, - item.value, - sidebyside=True - ) - self.action.start() - - def view_diff_revisions(self, widget, data=None): - from rabbitvcs.ui.diff import SVNDiff - - item1 = self.revisions[0]["revision"] - item2 = self.revisions[1]["revision"] - - self.action = VCSAction( - self.vcs_client, - notification=False - ) - self.action.append( - SVNDiff, - self.vcs_client.get_repo_url(self.path), - item2.value, - self.path, - item1.value - ) - self.action.start() + rabbitvcs.util.helper.launch_ui_window("diff", [ + "-s", + "%s@%s" % (self.path, parent), + "%s@%s" % (self.path, unicode(self.revisions[0]["revision"])), + "--vcs=%s" % self.caller.get_vcs_name() + ]) def compare_revisions(self, widget, data=None): - from rabbitvcs.ui.diff import SVNDiff - - item1 = self.revisions[0]["revision"] - item2 = self.revisions[1]["revision"] + path_older = self.path + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + path_older = self.vcs.svn().get_repo_url(self.path) + + rabbitvcs.util.helper.launch_ui_window("diff", [ + "-s", + "%s@%s" % (path_older, self.revisions[1]["revision"].value), + "%s@%s" % (self.path, unicode(self.revisions[0]["revision"])), + "--vcs=%s" % self.caller.get_vcs_name() + ]) + + def show_changes_previous_revision(self, widget, data=None): + rev_first = unicode(self.revisions[0]["revision"]) + if len(self.revisions[0]["parents"]) > 0: + parent = unicode(self.revisions[0]["parents"][0]) + else: + parent = unicode(self.revisions[0]["next_revision"]) - self.action = VCSAction( - self.vcs_client, - notification=False - ) - self.action.append( - SVNDiff, - self.vcs_client.get_repo_url(self.path), - item2.value, - self.vcs_client.get_repo_url(self.path), - item1.value, - sidebyside=True - ) - self.action.start() + path = self.path + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + path = self.vcs.svn().get_repo_url(self.path) + + rabbitvcs.util.helper.launch_ui_window("changes", [ + "%s@%s" % (path, parent), + "%s@%s" % (path, unicode(rev_last)), + "--vcs=%s" % self.caller.get_vcs_name() + ]) def show_changes_revisions(self, widget, data=None): - from rabbitvcs.ui.changes import Changes - item1 = self.revisions[0]["revision"] - item2 = self.revisions[1]["revision"] - path = self.vcs_client.get_repo_url(self.path) - - Changes( - path, - item2.value, - path, - item1.value - ) + rev_first = unicode(self.revisions[0]["revision"]) + rev_last = unicode(self.revisions[0]["next_revision"]) + + path = self.path + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + path = self.vcs.svn().get_repo_url(self.path) + + rabbitvcs.util.helper.launch_ui_window("changes", [ + "%s@%s" % (path, unicode(rev_first)), + "%s@%s" % (path, unicode(rev_last)), + "--vcs=%s" % self.caller.get_vcs_name() + ]) - def update_to(self, widget, data=None): - from rabbitvcs.ui.updateto import UpdateToRevision - UpdateToRevision(self.path, self.revisions[0]["revision"].value) + def update_to_this_revision(self, widget, data=None): + rabbitvcs.util.helper.launch_ui_window("updateto", [ + self.path, + "-r", unicode(self.revisions[0]["revision"]), + "--vcs=%s" % self.caller.get_vcs_name() + ]) def checkout(self, widget, data=None): - from rabbitvcs.ui.checkout import Checkout - url = self.vcs_client.get_repo_url(self.path) - Checkout(url=url, revision=self.revisions[0]["revision"].value).show() + url = "" + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + url = self.vcs.svn().get_repo_url(self.path) + + rabbitvcs.util.helper.launch_ui_window("checkout", [ + self.path, + url, + "-r", unicode(self.revisions[0]["revision"]), + "--vcs=%s" % self.caller.get_vcs_name() + ]) def branch_tag(self, widget, data=None): - from rabbitvcs.ui.branch import Branch - Branch(self.path, revision=self.revisions[0]["revision"].value).show() + rabbitvcs.util.helper.launch_ui_window("branch", [ + self.path, + "-r", unicode(self.revisions[0]["revision"]), + "--vcs=%s" % self.caller.get_vcs_name() + ]) + + def branches(self, widget, data=None): + rabbitvcs.util.helper.launch_ui_window("branches", [ + self.path, + "-r", unicode(self.revisions[0]["revision"]), + "--vcs=%s" % self.caller.get_vcs_name() + ]) + def tags(self, widget, data=None): + rabbitvcs.util.helper.launch_ui_window("tags", [ + self.path, + "-r", unicode(self.revisions[0]["revision"]), + "--vcs=%s" % self.caller.get_vcs_name() + ]) + def export(self, widget, data=None): - from rabbitvcs.ui.export import Export - Export(self.path, revision=self.revisions[0]["revision"].value).show() + rabbitvcs.util.helper.launch_ui_window("export", [ + self.path, + "-r", unicode(self.revisions[0]["revision"]), + "--vcs=%s" % self.caller.get_vcs_name() + ]) + + def merge(self, widget, data=None): + extra = [] + if self.vcs_name == rabbitvcs.vcs.VCS_GIT: + extra.append(unicode(self.revisions[0]["revision"])) + try: + fromrev = unicode(self.revisions[1]["revision"]) + extra.append(fromrev) + except IndexError, e: + pass + + extra += ["--vcs=%s" % self.caller.get_vcs_name()] + + rabbitvcs.util.helper.launch_ui_window("merge", [self.path] + extra) + + def reset(self, widget, data=None): + rabbitvcs.util.helper.launch_ui_window("reset", [ + self.path, + "-r", unicode(self.revisions[0]["revision"]), + "--vcs=%s" % self.caller.get_vcs_name() + ]) def edit_author(self, widget, data=None): message = "" @@ -727,9 +1135,12 @@ self.caller.edit_revprop("svn:log", new_message, self.caller.on_log_message_edited) def edit_revision_properties(self, widget, data=None): - from rabbitvcs.ui.revprops import SVNRevisionProperties - url = self.vcs_client.get_repo_url(self.path) - SVNRevisionProperties(url, self.revisions[0]["revision"].value) + url = self.vcs.svn().get_repo_url(self.path) + + rabbitvcs.util.helper.launch_ui_window("revprops", [ + "%s@%s" % (url, unicode(self.revisions[0]["revision"])), + "--vcs=%s" % self.caller.get_vcs_name() + ]) class LogTopContextMenu: """ @@ -744,28 +1155,29 @@ @param base_dir: The curent working directory @type base_dir: string - @param paths: The loaded path - @type paths: string + @param path: The loaded path + @type path: string @param revisions: The selected revisions - @type revisions: list of rabbitvcs.lib.vcs.Revision object + @type revisions: list of rabbitvcs.vcs.Revision object """ self.caller = caller self.event = event self.path = path self.revisions = revisions - self.vcs_client = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() self.conditions = LogTopContextMenuConditions( - self.vcs_client, + self.caller, + self.vcs, self.path, self.revisions ) self.callbacks = LogTopContextMenuCallbacks( self.caller, - self.vcs_client, + self.vcs, self.path, self.revisions ) @@ -775,18 +1187,23 @@ # is no submenu, or a recursive list of tuples for desired submenus. self.structure = [ (MenuViewDiffWorkingCopy, None), - (MenuCompareWorkingCopy, None), (MenuViewDiffPreviousRevision, None), - (MenuComparePreviousRevision, None), (MenuViewDiffRevisions, None), + (MenuCompareWorkingCopy, None), + (MenuComparePreviousRevision, None), (MenuCompareRevisions, None), + (MenuShowChangesPreviousRevision, None), (MenuShowChangesRevisions, None), (MenuSeparator, None), - (MenuUpdateToRevision, None), + (MenuUpdateToThisRevision, None), (MenuCheckout, None), + (MenuBranches, None), + (MenuTags, None), (MenuBranchTag, None), (MenuExport, None), - (MenuSeparator, None), + (MenuMerge, None), + (MenuReset, None), + (MenuSeparatorLast, None), (MenuEditAuthor, None), (MenuEditLogMessage, None), (MenuEditRevisionProperties, None) @@ -801,19 +1218,38 @@ class LogBottomContextMenuConditions: - def __init__(self, vcs_client, paths, revision): - self.vcs_client = vcs_client + def __init__(self, caller, vcs, paths, revisions): + self.caller = caller + self.vcs = vcs self.paths = paths - self.revision = revision + self.revisions = revisions + + def view_diff_working_copy(self, data=None): + return False def view_diff_previous_revision(self, data=None): - return (len(self.paths) == 1) + item = self.revisions[0]["revision"] + return ("previous_revision" in self.revisions[0] and len(self.revisions) == 1) - def show_changes_previous_revision(self, data=None): - return (len(self.paths) == 1) + def view_diff_revisions(self, data=None): + return (len(self.paths) == 1 and len(self.revisions) > 1) + + def compare_working_copy(self, data=None): + return False def compare_previous_revision(self, data=None): - return (len(self.paths) == 1) + item = self.revisions[0]["revision"] + return ("previous_revision" in self.revisions[0] and len(self.revisions) == 1) + + def compare_revisions(self, data=None): + return (len(self.paths) == 1 and len(self.revisions) > 1) + + def show_changes_previous_revision(self, data=None): + item = self.revisions[0]["revision"] + return ("previous_revision" in self.revisions[0] and len(self.revisions) == 1) + + def show_changes_revisions(self, data=None): + return (len(self.paths) == 1 and len(self.revisions) > 1) def _open(self, data=None): return True @@ -825,73 +1261,116 @@ return True class LogBottomContextMenuCallbacks: - def __init__(self, caller, vcs_client, paths, revision): + def __init__(self, caller, vcs, paths, revisions): self.caller = caller - self.vcs_client = vcs_client + self.vcs = vcs + self.svn = self.vcs.svn() + self.vcs_name = self.caller.get_vcs_name() + self.paths = paths - self.revision = revision + self.revisions = revisions def view_diff_previous_revision(self, widget, data=None): - rev_item = self.revision + rev = unicode(self.revisions[0]["revision"]) + + if len(self.revisions[0]["parents"]) > 0: + parent = unicode(self.revisions[0]["parents"][0]) + else: + parent = unicode(self.revisions[0]["next_revision"]) + path_item = self.paths[0] url = self.caller.root_url + path_item - self.caller.view_diff_for_path(url, rev_item.value) - - def show_changes_previous_revision(self, widget, data=None): - rev_item = self.revision + self.caller.view_diff_for_path(url, rev, parent) + + def view_diff_revisions(self, widget, data=None): + rev_first = unicode(self.revisions[0]["revision"]) + rev_last = unicode(self.revisions[-1]["revision"]) path_item = self.paths[0] url = self.caller.root_url + path_item - - from rabbitvcs.ui.changes import Changes - Changes( - url, - rev_item.value-1, - url, - rev_item.value - ) + self.caller.view_diff_for_path(url, latest_revision_number=rev_last, + earliest_revision_number=rev_first) def compare_previous_revision(self, widget, data=None): - rev_item = self.revision + rev = unicode(self.revisions[0]["revision"]) + + if len(self.revisions[0]["parents"]) > 0: + parent = unicode(self.revisions[0]["parents"][0]) + else: + parent = unicode(self.revisions[0]["next_revision"]) + + path_item = self.paths[0] + url = self.caller.root_url + path_item + self.caller.view_diff_for_path(url, rev, parent, sidebyside=True) + + def compare_revisions(self, widget, data=None): + earliest_rev = unicode(self.revisions[0]["revision"]) + latest_rev = unicode(self.revisions[-1]["revision"]) path_item = self.paths[0] url = self.caller.root_url + path_item - self.caller.view_diff_for_path(url, rev_item.value, sidebyside=True) + self.caller.view_diff_for_path(url, + latest_rev, + sidebyside=True, + earliest_revision_number=earliest_rev) - def _open(self, widget, data=None): - self.action = VCSAction( - self.vcs_client, - notification=False - ) + def show_changes_previous_revision(self, widget, data=None): + rev_first = unicode(self.revisions[0]["revision"]) + + if len(self.revisions[0]["parents"]) > 0: + parent = unicode(self.revisions[0]["parents"][0]) + else: + parent = unicode(self.revisions[0]["next_revision"]) - # This allows us to open multiple files at once - dests = [] - for path in self.paths: - url = self.caller.root_url + path - dest = "/tmp/rabbitvcs-" + str(self.revision.value) + "-" + os.path.basename(path) - self.action.append( - self.vcs_client.export, - url, - dest, - revision=self.revision - ) - dests.append(dest) + url = self.paths[0] + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + url = self.caller.root_url + self.paths[0] + + rabbitvcs.util.helper.launch_ui_window("changes", [ + "%s@%s" % (url, parent), + "%s@%s" % (url, rev_last), + "--vcs=%s" % self.caller.get_vcs_name() + ]) + + def show_changes_revisions(self, widget, data=None): + rev_first = unicode(self.revisions[0]["revision"]) + rev_last = unicode(self.revisions[-1]["revision"]) + + url = self.paths[0] + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + url = self.caller.root_url + self.paths[0] + + rabbitvcs.util.helper.launch_ui_window("changes", [ + "%s@%s" % (url, rev_first), + "%s@%s" % (url, rev_last), + "--vcs=%s" % self.caller.get_vcs_name() + ]) - for dest in dests: - self.action.append(rabbitvcs.lib.helper.open_item, dest) - - self.action.start() + + def _open(self, widget, data=None): + for path in self.paths: + path = self.caller.root_url + path + rabbitvcs.util.helper.launch_ui_window("open", [ + path, + "--vcs=%s" % self.vcs_name, + "-r", unicode(self.revisions[0]["revision"]) + ]) def annotate(self, widget, data=None): - url = self.caller.root_url + self.paths[0] + url = self.paths[0] + if self.vcs_name == rabbitvcs.vcs.VCS_SVN: + url = self.caller.root_url + self.paths[0] - from rabbitvcs.ui.annotate import Annotate - Annotate(url, self.revision.value) + rabbitvcs.util.helper.launch_ui_window("annotate", [ + url, + "--vcs=%s" % self.vcs_name, + "-r", unicode(self.revisions[0]["revision"]) + ]) class LogBottomContextMenu: """ Defines context menu items for a table with files """ - def __init__(self, caller, event, paths, revision): + def __init__(self, caller, event, paths, revisions): """ @param caller: The calling object @type caller: object @@ -903,35 +1382,40 @@ @type paths: list @param revision: The selected revision - @type revision: rabbitvcs.lib.vcs.Revision object + @type revision: rabbitvcs.vcs.Revision object """ self.caller = caller self.event = event self.paths = paths - self.revision = revision - self.vcs_client = rabbitvcs.lib.vcs.create_vcs_instance() + self.revisions = revisions + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() self.conditions = LogBottomContextMenuConditions( - self.vcs_client, + self.caller, + self.vcs, self.paths, - self.revision + self.revisions ) self.callbacks = LogBottomContextMenuCallbacks( self.caller, - self.vcs_client, + self.vcs, self.paths, - self.revision + self.revisions ) # The first element of each tuple is a key that matches a # ContextMenuItems item. The second element is either None when there # is no submenu, or a recursive list of tuples for desired submenus. self.structure = [ + (MenuViewDiffRevisions, None), (MenuViewDiffPreviousRevision, None), - (MenuShowChangesPreviousRevision, None), (MenuComparePreviousRevision, None), + (MenuCompareRevisions, None), + (MenuShowChangesPreviousRevision, None), + (MenuShowChangesRevisions, None), (MenuSeparator, None), (MenuOpen, None), (MenuAnnotate, None) @@ -944,11 +1428,37 @@ context_menu = GtkContextMenu(self.structure, self.conditions, self.callbacks) context_menu.show(self.event) +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNLog, + rabbitvcs.vcs.VCS_GIT: GitLog +} + +dialogs_map = { + rabbitvcs.vcs.VCS_SVN: SVNLogDialog, + rabbitvcs.vcs.VCS_GIT: GitLogDialog +} + +def log_factory(path, vcs): + if not vcs: + guess = rabbitvcs.vcs.guess(path) + vcs = guess["vcs"] + + return classes_map[vcs](path) + +def log_dialog_factory(path, ok_callback=None, multiple=False, vcs=None): + if not vcs: + guess = rabbitvcs.vcs.guess(path) + vcs = guess["vcs"] + + return dialogs_map[vcs](path, ok_callback, multiple) if __name__ == "__main__": - from rabbitvcs.ui import main - (options, paths) = main(usage="Usage: rabbitvcs log [url_or_path]") - - window = Log(paths[0]) + from rabbitvcs.ui import main, VCS_OPT + (options, paths) = main( + [VCS_OPT], + usage="Usage: rabbitvcs log [--vcs=svn|git] [url_or_path]" + ) + + window = log_factory(paths[0], vcs=options.vcs) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/markresolved.py rabbitvcs-0.15.0.5/rabbitvcs/ui/markresolved.py --- rabbitvcs-0.13.1/rabbitvcs/ui/markresolved.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/markresolved.py 2010-12-27 21:49:10.000000000 +0000 @@ -0,0 +1,127 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import thread + +import pygtk +import gobject +import gtk + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.add import Add +from rabbitvcs.ui.action import SVNAction +import rabbitvcs.ui.widget +import rabbitvcs.ui.dialog +import rabbitvcs.ui.action +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log + +log = Log("rabbitvcs.ui.markresolved") + +from rabbitvcs import gettext +_ = gettext.gettext + +class SVNMarkResolved(Add): + def __init__(self, paths, base_dir): + InterfaceView.__init__(self, "add", "Add") + + self.window = self.get_widget("Add") + self.window.set_title(_("Mark as Resolved")) + + self.paths = paths + self.base_dir = base_dir + self.last_row_clicked = None + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() + self.items = None + self.statuses = self.svn.STATUSES_FOR_RESOLVE + self.files_table = rabbitvcs.ui.widget.Table( + self.get_widget("files_table"), + [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, + gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], + [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension"), + _("Text Status"), _("Property Status")], + filters=[{ + "callback": rabbitvcs.ui.widget.path_filter, + "user_data": { + "base_dir": base_dir, + "column": 1 + } + }], + callbacks={ + "row-activated": self.on_files_table_row_activated, + "mouse-event": self.on_files_table_mouse_event, + "key-event": self.on_files_table_key_event + } + ) + + self.initialize_items() + + def populate_files_table(self): + self.files_table.clear() + for item in self.items: + self.files_table.append([ + True, + item.path, + rabbitvcs.util.helper.get_file_extension(item.path), + item.simple_content_status(), + item.simple_metadata_status() + ]) + + def on_ok_clicked(self, widget): + items = self.files_table.get_activated_rows(1) + if not items: + self.close() + return + self.hide() + + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, + register_gtk_quit=self.gtk_quit_is_set() + ) + + self.action.append(self.action.set_header, _("Mark as Resolved")) + self.action.append(self.action.set_status, _("Running Resolved Command...")) + for item in items: + self.action.append(self.svn.resolve, item, recurse=True) + self.action.append(self.action.set_status, _("Completed Mark as Resolved")) + self.action.append(self.action.finish) + self.action.start() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNMarkResolved +} + +def markresolved_factory(paths, base_dir=None): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths, base_dir) + +if __name__ == "__main__": + from rabbitvcs.ui import main, BASEDIR_OPT + (options, paths) = main( + [BASEDIR_OPT], + usage="Usage: rabbitvcs markresolved [path1] [path2] ..." + ) + + window = markresolved_factory(paths, options.base_dir) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/merge.py rabbitvcs-0.15.0.5/rabbitvcs/ui/merge.py --- rabbitvcs-0.13.1/rabbitvcs/ui/merge.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/merge.py 2011-10-21 16:05:08.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,21 +20,23 @@ # along with RabbitVCS; If not, see . # +import cgi + import pygtk import gobject import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.log import LogDialog -from rabbitvcs.ui.action import VCSAction -import rabbitvcs.lib.vcs +from rabbitvcs.ui.log import SVNLogDialog +from rabbitvcs.ui.action import SVNAction +import rabbitvcs.vcs import rabbitvcs.ui.widget -import rabbitvcs.lib.helper +import rabbitvcs.util.helper from rabbitvcs import gettext _ = gettext.gettext -class Merge(InterfaceView): +class SVNMerge(InterfaceView): def __init__(self, path): InterfaceView.__init__(self, "merge", "Merge") @@ -44,18 +46,24 @@ self.path = path self.page = self.assistant.get_nth_page(0) + self.last_page = None - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() - if not self.vcs.has_merge2(): + if not self.svn.has_merge2(): self.get_widget("mergetype_range_opt").set_sensitive(False) self.get_widget("mergetype_tree_opt").set_active(True) + self.get_widget("mergetype_reintegrate_opt").set_active(False) self.get_widget("mergeoptions_only_record").set_active(False) - + + if not self.svn.has_merge_reintegrate(): + self.get_widget("mergetype_reintegrate_opt").set_sensitive(False) + self.assistant.set_page_complete(self.page, True) self.assistant.set_forward_page_func(self.on_forward_clicked) - self.repo_paths = rabbitvcs.lib.helper.get_repository_paths() + self.repo_paths = rabbitvcs.util.helper.get_repository_paths() # Keeps track of which stages should be marked as complete self.type = None @@ -94,10 +102,10 @@ ignore_ancestry = self.get_widget("mergeoptions_ignore_ancestry").get_active() record_only = False - if self.vcs.has_merge2(): + if self.svn.has_merge2(): record_only = self.get_widget("mergeoptions_only_record").get_active() - action = VCSAction(self.vcs, register_gtk_quit=(not test)) + action = SVNAction(self.svn, register_gtk_quit=(not test)) action.append(action.set_header, _("Merge")) action.append(action.set_status, startcmd) @@ -105,9 +113,11 @@ kwargs = {} if self.type == "range": - url = self.get_widget("mergerange_from_url").get_text() - head_revision = self.vcs.get_head(self.path) + url = self.get_widget("mergerange_from_urls").get_active_text() + head_revision = self.svn.get_head(self.path) revisions = self.get_widget("mergerange_revisions").get_text() + if revisions == "": + revisions = "head" revisions = revisions.lower().replace("head", str(head_revision)) ranges = [] @@ -123,27 +133,27 @@ # Before pysvn v1.6.3, there was a bug that required the ranges # tuple to have three elements, even though only two were used # Fixed in Pysvn Revision 1114 - if (self.vcs.interface == "pysvn" and self.vcs.is_version_less_than((1,6,3,0))): + if (self.svn.interface == "pysvn" and self.svn.is_version_less_than((1,6,3,0))): ranges.append(( - self.vcs.revision("number", number=int(low)).primitive(), - self.vcs.revision("number", number=int(high)).primitive(), + self.svn.revision("number", number=int(low)).primitive(), + self.svn.revision("number", number=int(high)).primitive(), None )) else: ranges.append(( - self.vcs.revision("number", number=int(low)).primitive(), - self.vcs.revision("number", number=int(high)).primitive(), + self.svn.revision("number", number=int(low)).primitive(), + self.svn.revision("number", number=int(high)).primitive(), )) - action.append(rabbitvcs.lib.helper.save_repository_path, url) + action.append(rabbitvcs.util.helper.save_repository_path, url) # Build up args and kwargs because some args are not supported # with older versions of pysvn/svn args = ( - self.vcs.merge_ranges, + self.svn.merge_ranges, url, ranges, - self.vcs.revision("head"), + self.svn.revision("head"), self.path ) kwargs = { @@ -153,29 +163,47 @@ if record_only: kwargs["record_only"] = record_only + elif self.type == "reintegrate": + url = self.merge_reintegrate_repos.get_active_text() + revision = self.merge_reintegrate_revision.get_revision_object() + + action.append(rabbitvcs.util.helper.save_repository_path, url) + + # Build up args and kwargs because some args are not supported + # with older versions of pysvn/svn + args = ( + self.svn.merge_reintegrate, + url, + revision, + self.path + ) + kwargs = { + "dry_run": test + } + elif self.type == "tree": - from_url = self.get_widget("mergetree_from_url").get_text() - from_revision = self.vcs.revision("head") + from_url = self.get_widget("mergetree_from_urls").get_active_text() + from_revision = self.svn.revision("head") if self.get_widget("mergetree_from_revision_number_opt").get_active(): - from_revision = self.vcs.revision( + from_revision = self.svn.revision( "number", number=int(self.get_widget("mergetree_from_revision_number").get_text()) ) - to_url = self.get_widget("mergetree_to_url").get_text() - to_revision = self.vcs.revision("head") + to_url = self.get_widget("mergetree_to_urls").get_active_text() + to_revision = self.svn.revision("head") if self.get_widget("mergetree_to_revision_number_opt").get_active(): - to_revision = self.vcs.revision( + to_revision = self.svn.revision( "number", number=int(self.get_widget("mergetree_to_revision_number").get_text()) ) - action.append(rabbitvcs.lib.helper.save_repository_path, from_url) - action.append(rabbitvcs.lib.helper.save_repository_path, to_url) + action.append(rabbitvcs.util.helper.save_repository_path, from_url) + action.append(rabbitvcs.util.helper.save_repository_path, to_url) # Build up args and kwargs because some args are not supported # with older versions of pysvn/svn args = ( - self.vcs.merge_trees, + self.svn.merge_trees, from_url, from_revision, to_url, @@ -200,18 +228,23 @@ if current == 1: self.on_mergerange_prepare() elif current == 2: - self.on_mergebranch_prepare() + self.on_merge_reintegrate_prepare() elif current == 3: self.on_mergetree_prepare() elif current == 4: self.on_mergeoptions_prepare() + self.last_page = current + def on_forward_clicked(self, widget): current = self.assistant.get_current_page() if current == 0: if self.get_widget("mergetype_range_opt").get_active(): next = 1 self.type = "range" + elif self.get_widget("mergetype_reintegrate_opt").get_active(): + next = 2 + self.type = "reintegrate" elif self.get_widget("mergetype_tree_opt").get_active(): next = 3 self.type = "tree" @@ -235,8 +268,8 @@ self.mergerange_check_ready() def on_mergerange_show_log1_clicked(self, widget): - LogDialog( - self.get_widget("mergerange_from_url").get_text(), + SVNLogDialog( + self.get_widget("mergerange_from_urls").get_active_text(), ok_callback=self.on_mergerange_log1_closed, multiple=True ) @@ -244,7 +277,7 @@ def on_mergerange_log1_closed(self, data): self.get_widget("mergerange_revisions").set_text(data) - def on_mergerange_from_url_changed(self, widget): + def on_mergerange_from_urls_changed(self, widget): self.mergerange_check_ready() def on_mergerange_revisions_changed(self, widget): @@ -252,13 +285,13 @@ def mergerange_check_ready(self): ready = True - if self.get_widget("mergerange_from_url").get_text() == "": + if self.get_widget("mergerange_from_urls").get_active_text() == "": ready = False self.assistant.set_page_complete(self.page, ready) allow_log = False - if self.get_widget("mergerange_from_url").get_text(): + if self.get_widget("mergerange_from_urls").get_active_text(): allow_log = True self.get_widget("mergerange_show_log1").set_sensitive(allow_log) @@ -266,26 +299,37 @@ # Step 2b: Reintegrate a Branch # - def on_mergebranch_prepare(self): - if not hasattr(self, "mergebranch_repos"): - self.mergebranch_repos = rabbitvcs.ui.widget.ComboBox( - self.get_widget("mergebranch_from_urls"), + def on_merge_reintegrate_prepare(self): + if not hasattr(self, "merge_reintegrate_repos"): + self.merge_reintegrate_repos = rabbitvcs.ui.widget.ComboBox( + self.get_widget("merge_reintegrate_repos"), self.repo_paths ) - self.get_widget("mergebranch_working_copy").set_text(self.path) + self.merge_reintegrate_repos.cb.connect("changed", self.on_merge_reintegrate_from_urls_changed) + self.get_widget("merge_reintegrate_working_copy").set_text(self.path) - def on_mergebranch_show_log1_clicked(self, widget): - LogDialog(self.path) + if not hasattr(self, "merge_reintegrate_revision"): + self.merge_reintegrate_revision = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("revision_container"), + self.svn, + url_combobox=self.merge_reintegrate_repos, + expand=True + ) - def on_mergebranch_show_log2_clicked(self, widget): - LogDialog(self.path) + def on_merge_reintegrate_browse_clicked(self, widget): + from rabbitvcs.ui.browser import SVNBrowserDialog + SVNBrowserDialog(self.path, callback=self.on_repo_chooser_closed) + + def on_repo_chooser_closed(self, new_url): + self.merge_reintegrate_repos.set_child_text(new_url) + self.merge_reintegrate_check_ready() - def on_mergebranch_from_url_changed(self, widget): - self.mergebranch_check_ready() + def on_merge_reintegrate_from_urls_changed(self, widget): + self.merge_reintegrate_check_ready() - def mergebranch_check_ready(self): + def merge_reintegrate_check_ready(self): ready = True - if self.get_widget("mergebranch_from_url").get_text() == "": + if self.get_widget("merge_reintegrate_repos").get_active_text() == "": ready = False self.assistant.set_page_complete(self.page, ready) @@ -307,7 +351,7 @@ self.get_widget("mergetree_working_copy").set_text(self.path) def on_mergetree_from_show_log_clicked(self, widget): - LogDialog( + SVNLogDialog( self.path, ok_callback=self.on_mergetree_from_show_log_closed, multiple=False @@ -318,7 +362,7 @@ self.get_widget("mergetree_from_revision_number_opt").set_active(True) def on_mergetree_to_show_log_clicked(self, widget): - LogDialog( + SVNLogDialog( self.path, ok_callback=self.on_mergetree_to_show_log_closed, multiple=False @@ -329,7 +373,7 @@ self.get_widget("mergetree_to_revision_number_opt").set_active(True) def on_mergetree_working_copy_show_log_clicked(self, widget): - LogDialog(self.path) + SVNLogDialog(self.path) def on_mergetree_from_revision_number_focused(self, widget, data): self.get_widget("mergetree_from_revision_number_opt").set_active(True) @@ -337,17 +381,17 @@ def on_mergetree_to_revision_number_focused(self, widget, data): self.get_widget("mergetree_to_revision_number_opt").set_active(True) - def on_mergetree_from_url_changed(self, widget): + def on_mergetree_from_urls_changed(self, widget): self.mergetree_check_ready() - def on_mergetree_to_url_changed(self, widget): + def on_mergetree_to_urls_changed(self, widget): self.mergetree_check_ready() def mergetree_check_ready(self): ready = True - if self.get_widget("mergetree_from_url").get_text() == "": + if self.get_widget("mergetree_from_urls").get_active_text() == "": ready = False - if self.get_widget("mergetree_to_url").get_text() == "": + if self.get_widget("mergetree_to_urls").get_active_text() == "": ready = False self.assistant.set_page_complete(self.page, ready) @@ -357,12 +401,242 @@ # def on_mergeoptions_prepare(self): + if self.last_page == 2: + self.get_widget("mergeoptions_recursive").hide() + self.get_widget("mergeoptions_ignore_ancestry").hide() + self.get_widget("mergeoptions_only_record").hide() + else: + self.get_widget("mergeoptions_recursive").show() + self.get_widget("mergeoptions_ignore_ancestry").show() + self.get_widget("mergeoptions_only_record").show() + self.assistant.set_page_complete(self.page, True) +class BranchMerge(InterfaceView): + def __init__(self, path, branch1=None, branch2=None): + InterfaceView.__init__(self, "branch-merge", "Merge") + + self.path = path + self.branch1 = branch1 + self.branch2 = branch2 + self.vcs = rabbitvcs.vcs.VCS() + + def on_destroy(self, widget): + self.destroy() + + def on_cancel_clicked(self, widget, data=None): + self.close() + +class GitMerge(BranchMerge): + def __init__(self, path, branch1=None, branch2=None): + BranchMerge.__init__(self, path, branch1, branch2) + self.git = self.vcs.git(path) + + self.init_branch_widgets() + + self.from_branches = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("from_branch_container"), + self.git, + revision=self.branch1, + url=path, + expand=True, + revision_changed_callback=self.__revision_changed + ) + self.to_branches = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("to_branch_container"), + self.git, + revision=self.branch2, + url=path, + expand=True, + revision_changed_callback=self.__revision_changed + ) + + self.update_branch_info() + + def init_branch_widgets(self): + + self.info = {"from":{}, "to":{}} + + # FROM BRANCH INFO # + from_container = self.get_widget("from_branch_info") + to_container = self.get_widget("to_branch_info") + + # Set up the Author line + author = gtk.Label(_("Author:")) + author.set_size_request(90, -1) + author.set_properties(xalign=0,yalign=0) + self.info['from']['author'] = gtk.Label("") + self.info['from']['author'].set_properties(xalign=0,yalign=0,selectable=True) + self.info['from']['author'].set_line_wrap(True) + author_container = gtk.HBox(False, 0) + author_container.pack_start(author, False, False, 0) + author_container.pack_start(self.info['from']['author'], False, False, 0) + from_container.pack_start(author_container, False, False, 0) + + # Set up the Date line + date = gtk.Label(_("Date:")) + date.set_size_request(90, -1) + date.set_properties(xalign=0,yalign=0) + self.info['from']['date'] = gtk.Label("") + self.info['from']['date'].set_properties(xalign=0,yalign=0,selectable=True) + date_container = gtk.HBox(False, 0) + date_container.pack_start(date, False, False, 0) + date_container.pack_start(self.info['from']['date'], False, False, 0) + from_container.pack_start(date_container, False, False, 0) + + # Set up the Revision line + revision = gtk.Label(_("Revision:")) + revision.set_size_request(90, -1) + revision.set_properties(xalign=0,yalign=0) + self.info['from']['revision'] = gtk.Label("") + self.info['from']['revision'].set_properties(xalign=0,selectable=True) + self.info['from']['revision'].set_line_wrap(True) + revision_container = gtk.HBox(False, 0) + revision_container.pack_start(revision, False, False, 0) + revision_container.pack_start(self.info['from']['revision'], False, False, 0) + from_container.pack_start(revision_container, False, False, 0) + + # Set up the Log Message line + message = gtk.Label(_("Message:")) + message.set_size_request(90, -1) + message.set_properties(xalign=0,yalign=0) + self.info['from']['message'] = gtk.Label("") + self.info['from']['message'].set_properties(xalign=0,yalign=0,selectable=True) + self.info['from']['message'].set_line_wrap(True) + self.info['from']['message'].set_size_request(250, -1) + message_container = gtk.HBox(False, 0) + message_container.pack_start(message, False, False, 0) + message_container.pack_start(self.info['from']['message'], False, False, 0) + from_container.pack_start(message_container, False, False, 0) + + from_container.show_all() + + # Set up the Author line + author = gtk.Label(_("Author:")) + author.set_size_request(90, -1) + author.set_properties(xalign=0,yalign=0) + self.info['to']['author'] = gtk.Label("") + self.info['to']['author'].set_properties(xalign=0,yalign=0,selectable=True) + self.info['to']['author'].set_line_wrap(True) + to_author_container = gtk.HBox(False, 0) + to_author_container.pack_start(author, False, False, 0) + to_author_container.pack_start(self.info['to']['author'], False, False, 0) + to_container.pack_start(to_author_container, False, False, 0) + + # Set up the Date line + date = gtk.Label(_("Date:")) + date.set_size_request(90, -1) + date.set_properties(xalign=0,yalign=0) + self.info['to']['date'] = gtk.Label("") + self.info['to']['date'].set_properties(xalign=0,yalign=0,selectable=True) + to_date_container = gtk.HBox(False, 0) + to_date_container.pack_start(date, False, False, 0) + to_date_container.pack_start(self.info['to']['date'], False, False, 0) + to_container.pack_start(to_date_container, False, False, 0) + + # Set up the Revision line + revision = gtk.Label(_("Revision:")) + revision.set_size_request(90, -1) + revision.set_properties(xalign=0,yalign=0) + self.info['to']['revision'] = gtk.Label("") + self.info['to']['revision'].set_properties(xalign=0,selectable=True) + self.info['to']['revision'].set_line_wrap(True) + to_revision_container = gtk.HBox(False, 0) + to_revision_container.pack_start(revision, False, False, 0) + to_revision_container.pack_start(self.info['to']['revision'], False, False, 0) + to_container.pack_start(to_revision_container, False, False, 0) + + # Set up the Log Message line + message = gtk.Label(_("Message:")) + message.set_size_request(90, -1) + message.set_properties(xalign=0,yalign=0) + self.info['to']['message'] = gtk.Label("") + self.info['to']['message'].set_properties(xalign=0,yalign=0,selectable=True) + self.info['to']['message'].set_line_wrap(True) + self.info['to']['message'].set_size_request(250, -1) + to_message_container = gtk.HBox(False, 0) + to_message_container.pack_start(message, False, False, 0) + to_message_container.pack_start(self.info['to']['message'], False, False, 0) + to_container.pack_start(to_message_container, False, False, 0) + + to_container.show_all() + + def update_branch_info(self): + from_branch = self.from_branches.get_revision_object() + to_branch = self.to_branches.get_revision_object() + + if from_branch.value: + log = self.git.log(self.path, limit=1, revision=from_branch, showtype="branch") + if log: + from_info = log[0] + self.info['from']['author'].set_text(from_info.author) + self.info['from']['date'].set_text(rabbitvcs.util.helper.format_datetime(from_info.date)) + self.info['from']['revision'].set_text(unicode(from_info.revision)[0:7]) + self.info['from']['message'].set_text(cgi.escape(rabbitvcs.util.helper.format_long_text(from_info.message, 500))) + + if to_branch.value: + log = self.git.log(self.path, limit=1, revision=to_branch, showtype="branch") + if log: + to_info = log[0] + self.info['to']['author'].set_text(to_info.author) + self.info['to']['date'].set_text(rabbitvcs.util.helper.format_datetime(to_info.date)) + self.info['to']['revision'].set_text(unicode(to_info.revision)[0:7]) + self.info['to']['message'].set_text(cgi.escape(rabbitvcs.util.helper.format_long_text(to_info.message, 500))) + + def on_from_branches_changed(self, widget): + self.update_branch_info() + + def on_to_branches_changed(self, widget): + self.update_branch_info() + + def on_ok_clicked(self, widget, data=None): + from_branch = self.from_branches.get_revision_object() + to_branch = self.to_branches.get_revision_object() + + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + + self.action.append( + self.git.merge, + from_branch, + to_branch + ) + + self.action.append(self.action.finish) + self.action.start() + + def __revision_changed(self, widget): + self.update_branch_info() + if __name__ == "__main__": - from rabbitvcs.ui import main - (options, paths) = main(usage="Usage: rabbitvcs merge [path]") - - window = Merge(paths[0]) - window.register_gtk_quit() - gtk.main() + from rabbitvcs.ui import main, VCS_OPT + (options, args) = main( + [VCS_OPT], + usage="Usage: rabbitvcs merge path [revision... (for git)]" + ) + + path = args[0] + + vcs_name = options.vcs + if not vcs_name: + vcs_name = rabbitvcs.vcs.guess(path)["vcs"] + + window = None + if vcs_name == rabbitvcs.vcs.VCS_SVN: + window = SVNMerge(path) + window.register_gtk_quit() + gtk.main() + elif vcs_name == rabbitvcs.vcs.VCS_GIT: + revision1 = None + revision2 = None + if len(args) == 2: + revision1 = args[1] + elif len(args) == 3: + revision1 = args[1] + revision2 = args[2] + + window = GitMerge(path, revision1, revision2) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/open.py rabbitvcs-0.15.0.5/rabbitvcs/ui/open.py --- rabbitvcs-0.13.1/rabbitvcs/ui/open.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/open.py 2011-10-21 17:07:55.000000000 +0000 @@ -0,0 +1,145 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +from os import getcwd +import os.path + +import pygtk +import gobject +import gtk + +from rabbitvcs.ui import InterfaceNonView +from rabbitvcs.ui.action import SVNAction, GitAction + +import rabbitvcs.vcs + +from rabbitvcs import gettext +_ = gettext.gettext + +class SVNOpen(InterfaceNonView): + """ + This class provides a handler to open tracked files. + + """ + + def __init__(self, path, revision): + """ + @type path: string + @param path: The path to open + + @type revision: string + @param revision: The revision of the file to open + + """ + + InterfaceNonView.__init__(self) + + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() + + if revision and type(revision) in (str, unicode): + revision_obj = self.svn.revision("number", number=revision) + else: + revision_obj = self.svn.revision("HEAD") + + url = path + if not self.svn.is_path_repository_url(path): + url = self.svn.get_repo_root_url(path) + '/' + path + dest = rabbitvcs.util.helper.get_tmp_path("rabbitvcs-" + revision + "-" + os.path.basename(path)) + + self.svn.export( + url, + dest, + revision=revision_obj + ) + + rabbitvcs.util.helper.open_item(dest) + + raise SystemExit() + +class GitOpen(InterfaceNonView): + """ + This class provides a handler to open tracked files. + + """ + + def __init__(self, path, revision): + """ + @type path: string + @param path: The path to open + + @type revision: string + @param revision: The revision of the file to open + + """ + + InterfaceNonView.__init__(self) + + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) + + if revision: + revision_obj = self.git.revision(revision) + else: + revision_obj = self.git.revision("HEAD") + + dest_dir = rabbitvcs.util.helper.get_tmp_path("rabbitvcs-" + unicode(revision)) + + self.git.export( + path, + dest_dir, + revision=revision_obj + ) + + repo_path = self.git.find_repository_path(path) + relative_path = path + if path.startswith(repo_path): + relative_path = path[len(repo_path)+1:] + + dest_path = "%s/%s" % (dest_dir, relative_path) + + rabbitvcs.util.helper.open_item(dest_path) + + raise SystemExit() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNOpen, + rabbitvcs.vcs.VCS_GIT: GitOpen +} + +def open_factory(vcs, path, revision): + if not vcs: + guess = rabbitvcs.vcs.guess(path) + vcs = guess["vcs"] + + return classes_map[vcs](path, revision) + +if __name__ == "__main__": + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT + (options, paths) = main( + [REVISION_OPT, VCS_OPT], + usage="Usage: rabbitvcs open path [-r REVISION]" + ) + + window = open_factory(options.vcs, paths[0], options.revision) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/properties.py rabbitvcs-0.15.0.5/rabbitvcs/ui/properties.py --- rabbitvcs-0.13.1/rabbitvcs/ui/properties.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/properties.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,8 +27,8 @@ from rabbitvcs.ui import InterfaceView import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib.vcs -from rabbitvcs.lib.log import Log +import rabbitvcs.vcs +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.properties") @@ -64,7 +64,7 @@ ) self.table.allow_multiple() - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() # # UI Signal Callbacks @@ -146,12 +146,13 @@ class SVNProperties(PropertiesBase): def __init__(self, path): PropertiesBase.__init__(self, path) + self.svn = self.vcs.svn() self.load() def load(self): self.table.clear() try: - self.proplist = self.vcs.proplist(self.get_widget("path").get_text()) + self.proplist = self.svn.proplist(self.get_widget("path").get_text()) except Exception, e: log.exception(e) rabbitvcs.ui.dialog.MessageBox(_("Unable to retrieve properties list")) @@ -165,11 +166,11 @@ delete_recurse = self.get_widget("delete_recurse").get_active() for row in self.delete_stack: - self.vcs.propdel(self.path, row[1], recurse=delete_recurse) + self.svn.propdel(self.path, row[1], recurse=delete_recurse) failure = False for row in self.table.get_items(): - if (not self.vcs.propset(self.path, row[1], row[2], + if (not self.svn.propset(self.path, row[1], row[2], overwrite=True, recurse=row[0])): failure = True break diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/property_editor.py rabbitvcs-0.15.0.5/rabbitvcs/ui/property_editor.py --- rabbitvcs-0.13.1/rabbitvcs/ui/property_editor.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/property_editor.py 2011-10-20 18:14:56.000000000 +0000 @@ -34,18 +34,17 @@ import pygtk import gobject import gtk -import gnomevfs from rabbitvcs.ui import InterfaceView -from rabbitvcs.lib.contextmenu import GtkContextMenu, GtkContextMenuCaller +from rabbitvcs.util.contextmenu import GtkContextMenu, GtkContextMenuCaller import rabbitvcs.ui.wraplabel -import rabbitvcs.lib.contextmenuitems +import rabbitvcs.util.contextmenuitems import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib.vcs -from rabbitvcs.lib.helper import format_long_text -from rabbitvcs.lib.vcs.svn import Revision -from rabbitvcs.lib.log import Log +import rabbitvcs.vcs +from rabbitvcs.util.helper import format_long_text +from rabbitvcs.vcs.svn import Revision +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.property_editor") @@ -63,11 +62,11 @@ beneath this directory?""") PROP_MENU_STRUCTURE = [ - (rabbitvcs.lib.contextmenuitems.PropMenuEdit, None), - (rabbitvcs.lib.contextmenuitems.PropMenuRevert, None), - (rabbitvcs.lib.contextmenuitems.PropMenuRevertRecursive, None), - (rabbitvcs.lib.contextmenuitems.PropMenuDelete, None), - (rabbitvcs.lib.contextmenuitems.PropMenuDeleteRecursive, None)] + (rabbitvcs.util.contextmenuitems.PropMenuEdit, None), + (rabbitvcs.util.contextmenuitems.PropMenuRevert, None), + (rabbitvcs.util.contextmenuitems.PropMenuRevertRecursive, None), + (rabbitvcs.util.contextmenuitems.PropMenuDelete, None), + (rabbitvcs.util.contextmenuitems.PropMenuDeleteRecursive, None)] class PropEditor(InterfaceView, GtkContextMenuCaller): ''' @@ -93,30 +92,40 @@ self.path = path - self.get_widget("wc_text").set_text(gnomevfs.get_uri_from_local_path(os.path.realpath(path))) + self.get_widget("wc_text").set_text(self.get_local_path(os.path.realpath(path))) - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() - if not self.vcs.is_versioned(self.path): + if not self.svn.is_versioned(self.path): rabbitvcs.ui.dialog.MessageBox(_("File is not under version control.")) self.close() return - self.get_widget("remote_uri_text").set_text(self.vcs.get_repo_url(path)) - - # self.get_widget("apply_note").connect("size-allocate", wrapped_label_size_allocate_callback) - + self.get_widget("remote_uri_text").set_text(self.svn.get_repo_url(path)) + self.table = rabbitvcs.ui.widget.Table( self.get_widget("table"), - [gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], + [gobject.TYPE_STRING, rabbitvcs.ui.widget.TYPE_ELLIPSIZED, + gobject.TYPE_STRING, rabbitvcs.ui.widget.TYPE_STATUS], [_("Name"), _("Value"), _("Reserved"), _("Status")], - filters=[{ - "callback": rabbitvcs.ui.widget.long_text_filter, - "user_data": { - "cols": 0, - "column": 1 - } - }], + + filters=[ + { + "callback": rabbitvcs.ui.widget.long_text_filter, + "user_data": { + "cols": 0, + "column": 1 + } + }, + + { + "callback": rabbitvcs.ui.widget.translate_filter, + "user_data": { + "column": 3 + } + }], + callbacks={ "row-activated": self.on_table_row_activated, "mouse-event": self.on_table_mouse_event, @@ -126,9 +135,10 @@ self.table.allow_multiple() self.refresh() - - print "Property editor for %s" % path - + + def get_local_path(self, path): + return path.replace("file://", "") + def on_note_box_add(self, *args, **kwargs): print "Added!" @@ -138,7 +148,7 @@ propdets = {} try: - propdets = self.vcs.propdetails(self.path) + propdets = self.svn.propdetails(self.path) except Exception, e: log.exception(e) @@ -168,13 +178,13 @@ def edit_property(self, name=""): - value = self.vcs.propget(self.path, name) + value = self.svn.propget(self.path, name) dialog = rabbitvcs.ui.dialog.Property(name, value) name,value,recurse = dialog.run() if name: - success = self.vcs.propset(self.path, name, value, overwrite=True, recurse=False) + success = self.svn.propset(self.path, name, value, overwrite=True, recurse=False) if not success: rabbitvcs.ui.dialog.MessageBox(_("Unable to set new value for property.")) @@ -189,7 +199,7 @@ recursive = dialog.run() for name in names: - self.vcs.propdel(self.path, name, recurse=recursive) + self.svn.propdel(self.path, name, recurse=recursive) self.refresh() @@ -209,7 +219,7 @@ def show_menu(self, data): # self.show_files_table_popup_menu(treeview, data) selected_propnames = self.table.get_selected_row_items(0) - propdetails = self.vcs.propdetails(self.path) + propdetails = self.svn.propdetails(self.path) filtered_details = {} for propname, detail in propdetails.items(): @@ -229,26 +239,27 @@ self.caller = caller self.propdetails = propdetails self.vcs = vcs + self.svn = self.vcs.svn() - def property_edit(self, widget): + def property_edit(self, widget, *args): if self.propdetails.keys(): propname = self.propdetails.keys()[0] self.caller.edit_property(propname) - def property_delete(self, widget): + def property_delete(self, widget, *args): for propname in self.propdetails.keys(): - self.vcs.propdel(self.path, propname, recurse=False) + self.svn.propdel(self.path, propname, recurse=False) self.caller.refresh() - def property_delete_recursive(self, widget): + def property_delete_recursive(self, widget, *args): for propname in self.propdetails.keys(): - self.vcs.propdel(self.path, propname, recurse=True) + self.svn.propdel(self.path, propname, recurse=True) self.caller.refresh() - def property_revert(self, widget): + def property_revert(self, widget, *args): pass - def property_revert_recursive(self, widget): + def property_revert_recursive(self, widget, *args): pass @@ -267,7 +278,8 @@ for (propname, detail) in self.propdetails.items()]) def property_revert(self): - return self.all_modified() + return False + # return self.all_modified() def property_delete(self): return self.all_not_deleted() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/property_page.py rabbitvcs-0.15.0.5/rabbitvcs/ui/property_page.py --- rabbitvcs-0.13.1/rabbitvcs/ui/property_page.py 2010-01-26 16:07:01.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/property_page.py 2011-10-20 18:03:30.000000000 +0000 @@ -20,104 +20,144 @@ import os.path -import gtk - +import os +if "NAUTILUS_PYTHON_REQUIRE_GTK3" in os.environ and os.environ["NAUTILUS_PYTHON_REQUIRE_GTK3"]: + from gi.repository import Gtk as gtk + GTK3 = True + ICON_SIZE_BUTTON = gtk.IconSize.BUTTON + ICON_SIZE_DIALOG = gtk.IconSize.DIALOG +else: + import gtk + GTK3 = False + ICON_SIZE_BUTTON = gtk.ICON_SIZE_BUTTON + ICON_SIZE_DIALOG = gtk.ICON_SIZE_DIALOG + +from collections import defaultdict import rabbitvcs.ui -import rabbitvcs.lib.vcs +import rabbitvcs.ui.widget + +import rabbitvcs.vcs from rabbitvcs.services.checkerservice import StatusCheckerStub as StatusChecker from rabbitvcs.ui import STATUS_EMBLEMS -from rabbitvcs.util.vcs import make_single_status -from rabbitvcs.lib.log import Log +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.property_page") -class PropertyPage(rabbitvcs.ui.GladeWidgetWrapper): +from rabbitvcs import gettext +_ = gettext.gettext + +class PropertyPage(rabbitvcs.ui.GtkBuilderWidgetWrapper): - glade_filename = "property_page" - glade_id = "property_page" + gtkbuilder_filename = "property_page" + gtkbuilder_id = "prop_page_scroller" - def __init__(self, paths, vcs = None): - rabbitvcs.ui.GladeWidgetWrapper.__init__(self) + def __init__(self, paths, vcs=None, claim_domain=True): + rabbitvcs.ui.GtkBuilderWidgetWrapper.__init__(self, + claim_domain=claim_domain) self.paths = paths - self.vcs_client = vcs or rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = vcs or rabbitvcs.vcs.VCS() self.info_pane = self.get_widget("property_page") if len(paths) == 1: - file_info = FileInfoPane(paths[0], self.vcs_client) + file_info = FileInfoPane(paths[0], self.vcs, + claim_domain=self.claim_domain) self.info_pane.pack_start(file_info.get_widget(), - expand=False) + expand=False, + fill=False, + padding=0) elif len(paths) > 1: try: for path in paths: - expander = FileInfoExpander(path, vcs) + expander = FileInfoExpander(path, self.vcs, + claim_domain=self.claim_domain) self.info_pane.pack_start(expander.get_widget(), - expand=False) + expand=False, + fill=False, + padding=0) except Exception, ex: log.exception(ex) raise - - - -class FileInfoPane(rabbitvcs.ui.GladeWidgetWrapper): + +class FileInfoPane(rabbitvcs.ui.GtkBuilderWidgetWrapper): - glade_filename = "property_page" - glade_id = "file_info_table" + gtkbuilder_filename = "property_page" + gtkbuilder_id = "file_info_table" - def __init__(self, path, vcs = None): - rabbitvcs.ui.GladeWidgetWrapper.__init__(self) + def __init__(self, path, vcs=None, claim_domain=True): + rabbitvcs.ui.GtkBuilderWidgetWrapper.__init__(self, + claim_domain=claim_domain) - self.vcs = vcs or rabbitvcs.lib.vcs.create_vcs_instance() + self.path = path + self.vcs = vcs or rabbitvcs.vcs.VCS() self.checker = StatusChecker() self.get_widget("file_name").set_text(os.path.basename(path)) - #FIXME: I'm not sure where this should actually come from - vcstype = "none" - if self.vcs.is_in_a_or_a_working_copy(path): - vcstype = "subversion" - - self.get_widget("vcs_type").set_text(vcstype) - - self.get_widget("remote_url").set_text(self.vcs.get_repo_url(path)) - - status = self.checker.check_status(path, - recurse = False, - invalidate = False, - summary = False) - - single_status = make_single_status(status[path]) - text_status = status[path]["text_status"] - prop_status = status[path]["prop_status"] + self.status = self.checker.check_status(path, + recurse = False, + invalidate = False, + summary = False) + + self.get_widget("vcs_type").set_text(self.status.vcs_type) - self.get_widget("content_status").set_text(text_status) - self.get_widget("prop_status").set_text(prop_status) + self.get_widget("content_status").set_text(unicode(self.status.simple_content_status())) + self.get_widget("prop_status").set_text(unicode(self.status.simple_metadata_status())) self.set_icon_from_status(self.get_widget("content_status_icon"), - text_status) + self.status.simple_content_status()) self.set_icon_from_status(self.get_widget("prop_status_icon"), - prop_status) + self.status.simple_metadata_status()) + + self.set_icon_from_status(self.get_widget("vcs_icon"), - single_status, gtk.ICON_SIZE_DIALOG) + self.status.single, ICON_SIZE_DIALOG) - def set_icon_from_status(self, icon, status, size=gtk.ICON_SIZE_BUTTON): - if status in STATUS_EMBLEMS: + additional_props_table = rabbitvcs.ui.widget.KeyValueTable( + self.get_additional_info()) + + additional_props_table.show() + + self.get_widget("file_info_table").pack_start(additional_props_table, + expand=False, + fill=False, + padding=0) + + def set_icon_from_status(self, icon, status, size=ICON_SIZE_BUTTON): + if status in rabbitvcs.ui.STATUS_EMBLEMS: icon.set_from_icon_name("emblem-" + STATUS_EMBLEMS[status], size) -class FileInfoExpander(rabbitvcs.ui.GladeWidgetWrapper): + def get_additional_info(self): + vcs_type = rabbitvcs.vcs.guess_vcs(self.path)['vcs'] + + if(vcs_type == rabbitvcs.vcs.VCS_SVN): + return self.get_additional_info_svn() + else: + return [] + + def get_additional_info_svn(self): + + repo_url = self.vcs.svn().get_repo_url(self.path) + + return [ + (_("Repository URL"), repo_url)] + + +class FileInfoExpander(rabbitvcs.ui.GtkBuilderWidgetWrapper): - glade_filename = "property_page" - glade_id = "file_info_expander" + gtkbuilder_filename = "property_page" + gtkbuilder_id = "file_info_expander" - def __init__(self, path, vcs = None): + def __init__(self, path, vcs=None, claim_domain=True): # Might be None, but that's okay, only subclasses use it self.vcs = vcs - rabbitvcs.ui.GladeWidgetWrapper.__init__(self) + rabbitvcs.ui.GtkBuilderWidgetWrapper.__init__(self, + claim_domain=claim_domain) self.path = path self.get_widget("file_expander_path").set_label(path) @@ -126,14 +166,16 @@ self.expander = self.get_widget() - # There seems to be no easy way to connect to this in glade + # There seems to be no easy way to connect to this in gtkbuilder self.expander.connect("notify::expanded", self.on_expand) def on_expand(self, param_spec, user_data): if self.expander.get_expanded() and not self.file_info: - self.file_info = FileInfoPane(self.path, self.vcs).get_widget() - self.expander.add(self.file_info) - -class PropertyPageLabel(rabbitvcs.ui.GladeWidgetWrapper): - glade_filename = "property_page" - glade_id = "property_page_label" \ No newline at end of file + self.file_info = FileInfoPane(self.path, self.vcs, + claim_domain=self.claim_domain + ).get_widget() + self.expander.add(self.file_info) + +class PropertyPageLabel(rabbitvcs.ui.GtkBuilderWidgetWrapper): + gtkbuilder_filename = "property_page" + gtkbuilder_id = "property_page_label" diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/push.py rabbitvcs-0.15.0.5/rabbitvcs/ui/push.py --- rabbitvcs-0.13.1/rabbitvcs/ui/push.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/push.py 2010-12-14 21:17:03.000000000 +0000 @@ -0,0 +1,183 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os.path +import thread + +import pygtk +import gobject +import gtk +from datetime import datetime + +from rabbitvcs.ui import InterfaceView +import rabbitvcs.ui.widget +import rabbitvcs.ui.dialog +import rabbitvcs.ui.action +import rabbitvcs.util.helper +import rabbitvcs.vcs + +from rabbitvcs import gettext +_ = gettext.gettext + +DATETIME_FORMAT = rabbitvcs.util.helper.DT_FORMAT_THISWEEK + +gtk.gdk.threads_init() + +class Push(InterfaceView): + def __init__(self, path): + InterfaceView.__init__(self, "push", "Push") + + self.path = path + self.vcs = rabbitvcs.vcs.VCS() + + # + # Event handlers + # + + def on_destroy(self, widget): + self.destroy() + + def on_cancel_clicked(self, widget, data=None): + self.close() + + def on_ok_clicked(self, widget, data=None): + pass + +class GitPush(Push): + def __init__(self, path): + Push.__init__(self, path) + + self.git = self.vcs.git(path) + + self.repository_selector = rabbitvcs.ui.widget.GitRepositorySelector( + self.get_widget("repository_container"), + self.git + ) + + self.log_table = rabbitvcs.ui.widget.Table( + self.get_widget("log"), + [gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Date"), _("Message")], + flags={ + "sortable": True, + "sort_on": 0 + } + ) + + self.initialize_logs() + + def on_ok_clicked(self, widget, data=None): + self.hide() + + repository = self.repository_selector.repository_opt.get_active_text() + branch = self.repository_selector.branch_opt.get_active_text() + + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + self.action.append(self.action.set_header, _("Push")) + self.action.append(self.action.set_status, _("Running Push Command...")) + self.action.append(self.git.push, repository, branch) + self.action.append(self.action.set_status, _("Completed Push")) + self.action.append(self.action.finish) + self.action.start() + + def initialize_logs(self): + """ + Initializes the git logs + """ + + try: + thread.start_new_thread(self.load_logs, ()) + except Exception, e: + log.exception(e) + + def load_logs(self): + gtk.gdk.threads_enter() + self.get_widget("status").set_text(_("Loading...")) + + gtk.gdk.threads_leave() + + self.load_local_log() + self.load_remote_log() + + gtk.gdk.threads_enter() + self.get_widget("status").set_text("") + self.update_widgets() + gtk.gdk.threads_leave() + + def load_local_log(self): + self.local_log = self.git.log(limit=10, showtype="branch") + + def load_remote_log(self): + repository = self.repository_selector.repository_opt.get_active_text() + branch = self.repository_selector.branch_opt.get_active_text() + + refspec = "refs/remotes/%s/%s" % (repository, branch) + self.remote_log = self.git.log(revision=self.git.revision(refspec), limit=10, showtype="branch") + + def update_widgets(self): + repository = self.repository_selector.repository_opt.get_active_text() + branch = self.repository_selector.branch_opt.get_active_text() + + if not repository or not branch: + self.get_widget("ok").set_sensitive(False) + return + + has_commits = False + for item in self.local_log: + try: + remote_log_item = self.remote_log[0] + if unicode(remote_log_item.revision) != unicode(item.revision): + self.log_table.append([ + rabbitvcs.util.helper.format_datetime(item.date), + rabbitvcs.util.helper.format_long_text(item.message.rstrip("\n")) + ]) + has_commits = True + else: + break + + except IndexError: + break + + if not has_commits: + self.get_widget("ok").set_sensitive(False) + self.get_widget("status").set_text(_("No commits found")) + +classes_map = { + rabbitvcs.vcs.VCS_GIT: GitPush +} + +def push_factory(path): + guess = rabbitvcs.vcs.guess(path) + return classes_map[guess["vcs"]](path) + +if __name__ == "__main__": + from rabbitvcs.ui import main + (options, paths) = main( + usage="Usage: rabbitvcs push [path]" + ) + + window = push_factory(paths[0]) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/relocate.py rabbitvcs-0.15.0.5/rabbitvcs/ui/relocate.py --- rabbitvcs-0.13.1/rabbitvcs/ui/relocate.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/relocate.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,10 +25,10 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.action import SVNAction from rabbitvcs.ui.dialog import MessageBox -import rabbitvcs.lib.vcs -import rabbitvcs.lib.helper +import rabbitvcs.vcs +import rabbitvcs.util.helper from rabbitvcs import gettext _ = gettext.gettext @@ -50,15 +50,16 @@ self.path = path - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() - repo = self.vcs.get_repo_url(self.path) + repo = self.svn.get_repo_url(self.path) self.get_widget("from_url").set_text(repo) self.get_widget("to_url").set_text(repo) self.repositories = rabbitvcs.ui.widget.ComboBox( self.get_widget("to_urls"), - rabbitvcs.lib.helper.get_repository_paths() + rabbitvcs.util.helper.get_repository_paths() ) def on_destroy(self, widget): @@ -78,15 +79,15 @@ self.hide() - self.action = VCSAction( - self.vcs, + self.action = SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Relocate")) self.action.append(self.action.set_status, _("Running Relocate Command...")) self.action.append( - self.vcs.relocate, + self.svn.relocate, from_url, to_url, self.path diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/remotes.py rabbitvcs-0.15.0.5/rabbitvcs/ui/remotes.py --- rabbitvcs-0.13.1/rabbitvcs/ui/remotes.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/remotes.py 2010-12-10 00:06:15.000000000 +0000 @@ -0,0 +1,171 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os + +import pygtk +import gobject +import gtk +import pango + +from datetime import datetime +import time + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.action import GitAction +import rabbitvcs.ui.widget +from rabbitvcs.ui.dialog import DeleteConfirmation +import rabbitvcs.util.helper +import rabbitvcs.vcs + +from rabbitvcs import gettext +_ = gettext.gettext + +STATE_ADD = 0 +STATE_EDIT = 1 + +class GitRemotes(InterfaceView): + """ + Provides a UI interface to manage items + + """ + + state = STATE_ADD + + def __init__(self, path): + InterfaceView.__init__(self, "manager", "Manager") + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) + + self.get_widget("Manager").set_title(_("Remote Repository Manager")) + self.get_widget("items_label").set_markup(_("Remote Repositories")) + + self.selected_branch = None + self.items_treeview = rabbitvcs.ui.widget.Table( + self.get_widget("items_treeview"), + [gobject.TYPE_STRING, gobject.TYPE_STRING], + [_("Name"), _("Host")], + callbacks={ + "mouse-event": self.on_treeview_mouse_event, + "key-event": self.on_treeview_key_event, + "cell-edited": self.on_treeview_cell_edited_event + }, + flags={ + "sortable": True, + "sort_on": 0, + "editable": [0,1] + } + ) + + self.load() + + def on_destroy(self, widget): + self.destroy() + + def on_close_clicked(self, widget): + self.close() + + def load(self): + self.items_treeview.clear() + + self.remote_list = self.git.remote_list() + for remote in self.remote_list: + self.items_treeview.append([remote["name"], remote["host"]]) + + def save(self, row, column, data): + row = int(row) + + if row in self.remote_list: + remote = self.remote_list[int(row)] + + name = remote["name"] + if column == 0: + name = data + + host = remote["host"] + if column == 1: + host = data + + if name != remote["name"]: + self.git.remote_rename(remote["name"], name) + + if host != remote["host"]: + self.git.remote_set_url(remote["name"], host) + + self.load() + else: + (name, host) = self.items_treeview.get_row(row) + if name and host: + print "Adding" + self.git.remote_add(name, host) + self.load() + + def on_add_clicked(self, widget): + self.show_add() + + def on_delete_clicked(self, widget): + selected = self.items_treeview.get_selected_row_items(0) + + confirm = rabbitvcs.ui.dialog.Confirmation(_("Are you sure you want to delete %s?" % ", ".join(selected))) + result = confirm.run() + + if result == gtk.RESPONSE_OK or result == True: + for remote in selected: + self.git.remote_delete(remote) + + self.load() + + def on_treeview_key_event(self, treeview, data=None): + if gtk.gdk.keyval_name(data.keyval) in ("Up", "Down", "Return"): + self.on_treeview_event(treeview, data) + + def on_treeview_mouse_event(self, treeview, data=None): + self.on_treeview_event(treeview, data) + + def on_treeview_cell_edited_event(self, cell, row, data, column): + self.items_treeview.set_row_item(row, column, data) + self.save(row, column, data) + + def on_treeview_event(self, treeview, data): + selected = self.items_treeview.get_selected_row_items(0) + if len(selected) > 0: + if len(selected) == 1: + self.show_edit(selected[0]) + self.get_widget("delete").set_sensitive(True) + + def show_add(self): + self.state = STATE_ADD + self.items_treeview.unselect_all() + + self.items_treeview.append(["", ""]) + self.items_treeview.focus(1, 0) + + def show_edit(self, remote_name): + self.state = STATE_EDIT + +if __name__ == "__main__": + from rabbitvcs.ui import main + (options, paths) = main(usage="Usage: rabbitvcs branch-manager path") + + window = GitRemotes(paths[0]) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/rename.py rabbitvcs-0.15.0.5/rabbitvcs/ui/rename.py --- rabbitvcs-0.13.1/rabbitvcs/ui/rename.py 2010-03-26 14:26:11.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/rename.py 2010-12-27 20:02:46.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,55 +27,114 @@ import gtk from rabbitvcs.ui import InterfaceNonView -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.action import SVNAction from rabbitvcs.ui.dialog import MessageBox, OneLineTextChange -import rabbitvcs.lib.vcs +import rabbitvcs.vcs from rabbitvcs import gettext _ = gettext.gettext class Rename(InterfaceNonView): + DO_RENAME = False + def __init__(self, path): InterfaceNonView.__init__(self) + self.register_gtk_quit() + + self.vcs = rabbitvcs.vcs.VCS() - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - self.path = path - (self.dir, self.filename) = os.path.split(self.path) - dialog = OneLineTextChange(_("Rename"), _("New Name:"), self.filename) - (result, new_filename) = dialog.run() + if not os.path.exists(self.path): + MessageBox(_("The requested file or folder does not exist.")) + self.close() + return + + dialog = OneLineTextChange(_("Rename"), _("New Name:"), self.path) + (result, new_path) = dialog.run() if result != gtk.RESPONSE_OK: self.close() return - if not new_filename: + if not new_path: MessageBox(_("The new name field is required")) + + self.new_path = new_path + self.DO_RENAME = True + +class SVNRename(Rename): + def __init__(self, path): + Rename.__init__(self, path) + + if not self.DO_RENAME: return - new_path = os.path.join(self.dir, new_filename) + self.svn = self.vcs.svn() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) - + + dirname = os.path.dirname(self.new_path) + if not os.path.exists(dirname): + os.mkdir(dirname) + self.svn.add(dirname) + self.action.append(self.action.set_header, _("Rename")) self.action.append(self.action.set_status, _("Running Rename Command...")) self.action.append( - self.vcs.move, + self.svn.move, self.path, - new_path + self.new_path ) self.action.append(self.action.set_status, _("Completed Rename")) self.action.append(self.action.finish) + self.action.append(self.close) self.action.start() + +class GitRename(Rename): + def __init__(self, path): + Rename.__init__(self, path) + + if not self.DO_RENAME: + return + self.git = self.vcs.git(path) + + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + dirname = os.path.dirname(os.path.realpath(self.new_path)) + if not os.path.exists(dirname): + os.mkdir(dirname) + + self.action.append(self.action.set_header, _("Rename")) + self.action.append(self.action.set_status, _("Running Rename Command...")) + self.action.append( + self.git.move, + self.path, + self.new_path + ) + self.action.append(self.action.set_status, _("Completed Rename")) + self.action.append(self.action.finish) + self.action.append(self.close) + self.action.start() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNRename, + rabbitvcs.vcs.VCS_GIT: GitRename +} + +def rename_factory(path): + guess = rabbitvcs.vcs.guess(path) + return classes_map[guess["vcs"]](path) + if __name__ == "__main__": from rabbitvcs.ui import main (options, paths) = main(usage="Usage: rabbitvcs rename [path]") - window = Rename(paths[0]) - window.register_gtk_quit() + window = rename_factory(os.path.abspath(paths[0])) gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/renderers/graphcell.py rabbitvcs-0.15.0.5/rabbitvcs/ui/renderers/graphcell.py --- rabbitvcs-0.13.1/rabbitvcs/ui/renderers/graphcell.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/renderers/graphcell.py 2011-02-01 16:18:41.000000000 +0000 @@ -0,0 +1,206 @@ +"""Cell renderer for directed graph. + +This module contains the implementation of a custom GtkCellRenderer that +draws part of the directed graph based on the lines suggested by the code +in graph.py. + +Because we're shiny, we use Cairo to do this, and because we're naughty +we cheat and draw over the bits of the TreeViewColumn that are supposed to +just be for the background. +""" + +__copyright__ = "Copyright 2005 Canonical Ltd." +__author__ = "Scott James Remnant " + +import math + +import gtk +import gobject +import pango +import cairo + +# Styles used when rendering revision graph edges +style_SOLID = 0 +style_DASHED = 1 + +class CellRendererGraph(gtk.GenericCellRenderer): + """Cell renderer for directed graph. + + Properties: + node (column, colour) tuple to draw revision node, + in_lines (start, end, colour, style) tuple list to draw inward lines, + out_lines (start, end, colour, style) tuple list to draw outward lines. + """ + + columns_len = 0 + + __gproperties__ = { + "graph": ( gobject.TYPE_PYOBJECT, "graph", + "revision node instruction", + gobject.PARAM_WRITABLE + ) + } + + def do_set_property(self, property, value): + """Set properties from GObject properties.""" + + if not value: + return + + if property.name == "graph": + (self.node, self.in_lines, self.out_lines) = value + else: + raise AttributeError, "no such property: '%s'" % property.name + + def box_size(self, widget): + """Calculate box size based on widget's font. + + Cache this as it's probably expensive to get. It ensures that we + draw the graph at least as large as the text. + """ + try: + return self._box_size + except AttributeError: + pango_ctx = widget.get_pango_context() + font_desc = widget.get_style().font_desc + metrics = pango_ctx.get_metrics(font_desc) + + ascent = pango.PIXELS(metrics.get_ascent()) + descent = pango.PIXELS(metrics.get_descent()) + + self._box_size = ascent + descent + 1 + return self._box_size + + def set_colour(self, ctx, colour, bg, fg): + """Set the context source colour. + + Picks a distinct colour based on an internal wheel; the bg + parameter provides the value that should be assigned to the 'zero' + colours and the fg parameter provides the multiplier that should be + applied to the foreground colours. + """ + + if isinstance(colour, str): + r, g, b = colour[1:3], colour[3:5], colour[5:7] + colour_rgb = int(r, 16) / 255., int(g, 16) / 255., int(b, 16) / 255. + else: + if colour == 0: + colour_rgb = gtklib.MAINLINE_COLOR + else: + colour_rgb = gtklib.LINE_COLORS[colour % len(gtklib.LINE_COLORS)] + + red = (colour_rgb[0] * fg) or bg + green = (colour_rgb[1] * fg) or bg + blue = (colour_rgb[2] * fg) or bg + + ctx.set_source_rgb(red, green, blue) + + def on_get_size(self, widget, cell_area): + """Return the size we need for this cell. + + Each cell is drawn individually and is only as wide as it needs + to be, we let the TreeViewColumn take care of making them all + line up. + """ + box_size = self.box_size(widget) + 1 + + width = box_size * (self.columns_len + 1) + height = box_size + + # FIXME I have no idea how to use cell_area properly + return (0, 0, width, height) + + def on_render(self, window, widget, bg_area, cell_area, exp_area, flags): + """Render an individual cell. + + Draws the cell contents using cairo, taking care to clip what we + do to within the background area so we don't draw over other cells. + Note that we're a bit naughty there and should really be drawing + in the cell_area (or even the exposed area), but we explicitly don't + want any gutter. + + We try and be a little clever, if the line we need to draw is going + to cross other columns we actually draw it as in the .---' style + instead of a pure diagonal ... this reduces confusion by an + incredible amount. + """ + ctx = window.cairo_create() + ctx.rectangle(bg_area.x, bg_area.y, bg_area.width, bg_area.height) + ctx.clip() + + box_size = self.box_size(widget) + + # Maybe draw branch head highlight under revision node + if self.node: + (column, colour) = self.node + arc_start_position_x = cell_area.x + box_size * column + box_size / 2; + arc_start_position_y = cell_area.y + cell_area.height / 2; + + ctx.set_line_width(box_size / 8) + ctx.set_line_cap(cairo.LINE_CAP_ROUND) + + # Draw lines into the cell + if self.in_lines: + for start, end, lcolour in self.in_lines: + style = style_SOLID + self.render_line (ctx, cell_area, box_size, + bg_area.y, bg_area.height, + start, end, lcolour, style) + + # Draw lines out of the cell + if self.out_lines: + for start, end, lcolour in self.out_lines: + style = style_SOLID + self.render_line (ctx, cell_area, box_size, + bg_area.y + bg_area.height, bg_area.height, + start, end, lcolour, style) + + # Draw the revision node in the right column + if not self.node: + return + + ctx.arc(arc_start_position_x, arc_start_position_y, + box_size / 5, 0, 2 * math.pi) + self.set_colour(ctx, colour, 0.0, 0.5) + ctx.stroke_preserve() + self.set_colour(ctx, colour, 0.5, 1.0) + ctx.fill() + + def render_line (self, ctx, cell_area, box_size, mid, + height, start, end, colour, style): + if start is None: + x = cell_area.x + box_size * end + box_size / 2 + ctx.move_to(x, mid + height / 3) + ctx.line_to(x, mid + height / 3) + ctx.move_to(x, mid + height / 6) + ctx.line_to(x, mid + height / 6) + + elif end is None: + x = cell_area.x + box_size * start + box_size / 2 + ctx.move_to(x, mid - height / 3) + ctx.line_to(x, mid - height / 3) + ctx.move_to(x, mid - height / 6) + ctx.line_to(x, mid - height / 6) + else: + startx = cell_area.x + box_size * start + box_size / 2 + endx = cell_area.x + box_size * end + box_size / 2 + + ctx.move_to(startx, mid - height / 2) + + if start - end == 0 : + ctx.line_to(endx, mid + height / 2) + else: + ctx.curve_to(startx, mid - height / 5, + startx, mid - height / 5, + startx + (endx - startx) / 2, mid) + + ctx.curve_to(endx, mid + height / 5, + endx, mid + height / 5 , + endx, mid + height / 2) + + self.set_colour(ctx, colour, 0.0, 0.65) + if style == style_DASHED: + dashes = [1, 2] + ctx.set_dash(dashes) + ctx.stroke() + ctx.set_dash([]) diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/reset.py rabbitvcs-0.15.0.5/rabbitvcs/ui/reset.py --- rabbitvcs-0.13.1/rabbitvcs/ui/reset.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/reset.py 2010-12-29 15:51:16.000000000 +0000 @@ -0,0 +1,141 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os + +import pygtk +import gobject +import gtk +import pango + +from datetime import datetime +import time + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.action import GitAction +import rabbitvcs.ui.widget +import rabbitvcs.util.helper +import rabbitvcs.vcs + +from rabbitvcs import gettext +_ = gettext.gettext + +class GitReset(InterfaceView): + """ + Provides a UI to reset your repository to some specified state + + """ + + def __init__(self, path, revision=None): + InterfaceView.__init__(self, "reset", "Reset") + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) + self.path = path + self.revision_obj = None + if revision: + self.revision_obj = self.git.revision(revision) + + self.get_widget("path").set_text(path) + + self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("revision_container"), + self.git, + revision=self.revision_obj, + url=self.path, + expand=True + ) + + self.get_widget("none_opt").set_active(True) + self.check_path() + + def on_destroy(self, widget): + self.destroy() + + def on_close_clicked(self, widget): + self.close() + + def on_cancel_clicked(self, widget): + self.close() + + def on_ok_clicked(self, widget): + path = self.get_widget("path").get_text() + + mixed = self.get_widget("mixed_opt").get_active() + soft = self.get_widget("soft_opt").get_active() + hard = self.get_widget("hard_opt").get_active() + merge = self.get_widget("merge_opt").get_active() + none = self.get_widget("none_opt").get_active() + + type = None + if mixed: + type = "mixed" + if soft: + type = "soft" + if hard: + type = "hard" + if merge: + type = "merge" + + revision = self.revision_selector.get_revision_object() + + self.hide() + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + self.action.append(self.action.set_header, _("Reset")) + self.action.append(self.action.set_status, _("Running Reset Command...")) + self.action.append( + self.git.reset, + path, + revision, + type + ) + self.action.append(self.action.set_status, _("Completed Reset")) + self.action.append(self.action.finish) + self.action.start() + + def on_browse_clicked(self, widget, data=None): + chooser = rabbitvcs.ui.dialog.FolderChooser() + path = chooser.run() + if path is not None: + self.get_widget("path").set_text(path) + + def on_path_changed(self, widget, data=None): + self.check_path() + + def check_path(self): + path = self.get_widget("path").get_text() + root = self.git.find_repository_path(path) + if root != path: + self.get_widget("none_opt").set_active(True) + +if __name__ == "__main__": + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT + (options, paths) = main( + [REVISION_OPT, VCS_OPT], + usage="Usage: rabbitvcs reset [-r REVISION] path" + ) + + window = GitReset(paths[0], options.revision) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/resolve.py rabbitvcs-0.15.0.5/rabbitvcs/ui/resolve.py --- rabbitvcs-0.13.1/rabbitvcs/ui/resolve.py 2009-11-30 17:19:34.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/resolve.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ -# -# This is an extension to the Nautilus file manager to allow better -# integration with the Subversion source control system. -# -# Copyright (C) 2006-2008 by Jason Field -# Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb -# -# RabbitVCS 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 2 of the License, or -# (at your option) any later version. -# -# RabbitVCS 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 RabbitVCS; If not, see . -# - -import thread - -import pygtk -import gobject -import gtk - -from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.add import Add -from rabbitvcs.ui.action import VCSAction -import rabbitvcs.ui.widget -import rabbitvcs.ui.dialog -import rabbitvcs.ui.action -import rabbitvcs.lib.helper -from rabbitvcs.lib.log import Log - -log = Log("rabbitvcs.ui.resolve") - -from rabbitvcs import gettext -_ = gettext.gettext - -class Resolve(Add): - def __init__(self, paths, base_dir): - InterfaceView.__init__(self, "add", "Add") - - self.window = self.get_widget("Add") - self.window.set_title(_("Resolve")) - - self.paths = paths - self.base_dir = base_dir - self.last_row_clicked = None - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - self.items = None - self.statuses = [self.vcs.STATUS["conflicted"]] - self.files_table = rabbitvcs.ui.widget.Table( - self.get_widget("files_table"), - [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, - gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING], - [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension"), - _("Text Status"), _("Property Status")], - filters=[{ - "callback": rabbitvcs.ui.widget.path_filter, - "user_data": { - "base_dir": base_dir, - "column": 1 - } - }], - callbacks={ - "row-activated": self.on_files_table_row_activated, - "mouse-event": self.on_files_table_mouse_event, - "key-event": self.on_files_table_key_event - } - ) - - self.initialize_items() - - def populate_files_table(self): - self.files_table.clear() - for item in self.items: - self.files_table.append([ - True, - item.path, - rabbitvcs.lib.helper.get_file_extension(item.path), - item.text_status, - item.prop_status - ]) - - def on_ok_clicked(self, widget): - items = self.files_table.get_activated_rows(1) - if not items: - self.close() - return - self.hide() - - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, - register_gtk_quit=self.gtk_quit_is_set() - ) - - self.action.append(self.action.set_header, _("Resolve")) - self.action.append(self.action.set_status, _("Running Resolve Command...")) - for item in items: - self.action.append(self.vcs.resolve, item, recurse=True) - self.action.append(self.action.set_status, _("Completed Resolve")) - self.action.append(self.action.finish) - self.action.start() - -if __name__ == "__main__": - from rabbitvcs.ui import main, BASEDIR_OPT - (options, paths) = main( - [BASEDIR_OPT], - usage="Usage: rabbitvcs resolve [path1] [path2] ..." - ) - - window = Resolve(paths, options.base_dir) - window.register_gtk_quit() - gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/revert.py rabbitvcs-0.15.0.5/rabbitvcs/ui/revert.py --- rabbitvcs-0.13.1/rabbitvcs/ui/revert.py 2009-11-30 17:19:34.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/revert.py 2010-12-17 20:26:47.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,19 +28,21 @@ from rabbitvcs.ui import InterfaceView from rabbitvcs.ui.add import Add -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.action import SVNAction import rabbitvcs.ui.widget import rabbitvcs.ui.dialog import rabbitvcs.ui.action -import rabbitvcs.lib.helper -from rabbitvcs.lib.log import Log +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log + +import rabbitvcs.vcs log = Log("rabbitvcs.ui.revert") from rabbitvcs import gettext _ = gettext.gettext -class Revert(Add): +class SVNRevert(Add): def __init__(self, paths, base_dir=None): InterfaceView.__init__(self, "add", "Add") @@ -50,9 +52,9 @@ self.paths = paths self.base_dir = base_dir self.last_row_clicked = None - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() self.items = None - self.statuses = self.vcs.STATUSES_FOR_REVERT + self.statuses = self.vcs.svn().STATUSES_FOR_REVERT self.files_table = rabbitvcs.ui.widget.Table( self.get_widget("files_table"), [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, @@ -81,9 +83,9 @@ self.files_table.append([ True, item.path, - rabbitvcs.lib.helper.get_file_extension(item.path), - item.text_status, - item.prop_status + rabbitvcs.util.helper.get_file_extension(item.path), + item.simple_content_status(), + item.simple_metadata_status() ]) def on_ok_clicked(self, widget): @@ -93,29 +95,120 @@ return self.hide() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.vcs.svn(), register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Revert")) self.action.append(self.action.set_status, _("Running Revert Command...")) - self.action.append(self.vcs.revert, items, recurse=True) + self.action.append(self.vcs.svn().revert, items, recurse=True) self.action.append(self.action.set_status, _("Completed Revert")) self.action.append(self.action.finish) self.action.start() -class RevertQuiet: - def __init__(self, paths): - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, +class GitRevert(Add): + def __init__(self, paths, base_dir=None): + InterfaceView.__init__(self, "add", "Add") + + self.window = self.get_widget("Add") + self.window.set_title(_("Revert")) + + self.paths = paths + self.base_dir = base_dir + self.last_row_clicked = None + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(self.paths[0]) + self.items = None + self.statuses = self.git.STATUSES_FOR_REVERT + self.files_table = rabbitvcs.ui.widget.Table( + self.get_widget("files_table"), + [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, + gobject.TYPE_STRING ,gobject.TYPE_STRING], + [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension"), + _("Status")], + filters=[{ + "callback": rabbitvcs.ui.widget.path_filter, + "user_data": { + "base_dir": base_dir, + "column": 1 + } + }], + callbacks={ + "row-activated": self.on_files_table_row_activated, + "mouse-event": self.on_files_table_mouse_event, + "key-event": self.on_files_table_key_event + } + ) + + self.initialize_items() + + def populate_files_table(self): + self.files_table.clear() + for item in self.items: + self.files_table.append([ + True, + item.path, + rabbitvcs.util.helper.get_file_extension(item.path), + item.simple_content_status() + ]) + + def on_ok_clicked(self, widget): + items = self.files_table.get_activated_rows(1) + if not items: + self.close() + return + self.hide() + + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + + self.action.append(self.action.set_header, _("Revert")) + self.action.append(self.action.set_status, _("Running Revert Command...")) + self.action.append(self.git.checkout, items) + self.action.append(self.action.set_status, _("Completed Revert")) + self.action.append(self.action.finish) + self.action.start() + +class SVNRevertQuiet: + def __init__(self, paths, base_dir=None): + self.vcs = rabbitvcs.vcs.VCS() + self.action = rabbitvcs.ui.action.SVNAction( + self.vcs.svn(), run_in_thread=False ) - self.action.append(self.vcs.revert, paths) + self.action.append(self.vcs.svn().revert, paths) self.action.run() +class GitRevertQuiet: + def __init__(self, paths, base_dir=None): + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(paths[0]) + self.action = rabbitvcs.ui.action.GitAction( + self.git, + run_in_thread=False + ) + + self.action.append(self.git.checkout, paths) + self.action.run() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNRevert, + rabbitvcs.vcs.VCS_GIT: GitRevert +} + +quiet_classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNRevertQuiet, + rabbitvcs.vcs.VCS_GIT: GitRevertQuiet +} + +def revert_factory(classes_map, paths, base_dir=None): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths, base_dir) + if __name__ == "__main__": from rabbitvcs.ui import main, BASEDIR_OPT, QUIET_OPT (options, paths) = main( @@ -124,8 +217,8 @@ ) if options.quiet: - RevertQuiet(paths) + revert_factory(quiet_classes_map, paths) else: - window = Revert(paths, options.base_dir) + window = revert_factory(classes_map, paths, options.base_dir) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/revprops.py rabbitvcs-0.15.0.5/rabbitvcs/ui/revprops.py --- rabbitvcs-0.13.1/rabbitvcs/ui/revprops.py 2009-11-13 17:47:25.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/revprops.py 2011-01-08 20:46:04.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,9 +27,9 @@ from rabbitvcs.ui.properties import PropertiesBase import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib.vcs -from rabbitvcs.lib.log import Log -from rabbitvcs.ui.action import VCSAction +import rabbitvcs.vcs +from rabbitvcs.util.log import Log +from rabbitvcs.ui.action import SVNAction log = Log("rabbitvcs.ui.revprops") @@ -40,17 +40,23 @@ def __init__(self, path, revision=None): PropertiesBase.__init__(self, path) + self.svn = self.vcs.svn() + + if not self.svn.is_path_repository_url(path): + self.path = self.svn.get_repo_url(path) + self.get_widget("path").set_text(self.path) + self.revision = revision self.revision_obj = None if revision is not None: - self.revision_obj = self.vcs.revision("number", revision) + self.revision_obj = self.svn.revision("number", revision) self.load() def load(self): self.table.clear() try: - self.proplist = self.vcs.revproplist( + self.proplist = self.svn.revproplist( self.get_widget("path").get_text(), self.revision_obj ) @@ -66,14 +72,15 @@ def save(self): delete_recurse = self.get_widget("delete_recurse").get_active() - self.action = VCSAction( - self.vcs, - notification=False + self.action = SVNAction( + self.svn, + notification=False, + run_in_thread=False ) for row in self.delete_stack: self.action.append( - self.vcs.revpropdel, + self.svn.revpropdel, self.path, row[1], self.revision_obj, @@ -82,7 +89,7 @@ for row in self.table.get_items(): self.action.append( - self.vcs.revpropset, + self.svn.revpropset, row[1], row[2], self.path, @@ -90,14 +97,18 @@ force=True ) - self.action.append(self.close) - self.action.start() + self.action.run() + + self.close() if __name__ == "__main__": - from rabbitvcs.ui import main - (options, args) = main(usage="Usage: rabbitvcs revprops [url1@rev1]") + from rabbitvcs.ui import main, VCS_OPT + (options, args) = main( + [VCS_OPT], + usage="Usage: rabbitvcs revprops [url1@rev1]" + ) - pathrev = rabbitvcs.lib.helper.parse_path_revision_string(args.pop(0)) + pathrev = rabbitvcs.util.helper.parse_path_revision_string(args.pop(0)) window = SVNRevisionProperties(pathrev[0], pathrev[1]) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/settings.py rabbitvcs-0.15.0.5/rabbitvcs/ui/settings.py --- rabbitvcs-0.13.1/rabbitvcs/ui/settings.py 2010-02-26 16:55:45.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/settings.py 2011-10-20 13:57:54.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,25 +25,34 @@ import pygtk import gobject import gtk +import pango +import dbus from rabbitvcs.ui import InterfaceView import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib.settings -import rabbitvcs.lib.helper +import rabbitvcs.util.settings +import rabbitvcs.util.helper + +import rabbitvcs.services.checkerservice +from rabbitvcs.services.checkerservice import StatusCheckerStub from rabbitvcs import gettext _ = gettext.gettext +CHECKER_UNKNOWN_INFO = _("Unknown") +CHECKER_SERVICE_ERROR = _( +"There was an error communicating with the status checker service.") + class Settings(InterfaceView): - def __init__(self): + def __init__(self, base_dir=None): """ Provides an interface to the settings library. """ InterfaceView.__init__(self, "settings", "Settings") - self.settings = rabbitvcs.lib.settings.SettingsManager() + self.settings = rabbitvcs.util.settings.SettingsManager() self.language = rabbitvcs.ui.widget.ComboBox( self.get_widget("language"), @@ -94,6 +103,131 @@ if not val: val = "Debug" self.logging_level.set_active_from_value(val) + + # Git Configuration Editor + show_git = False + self.file_editor = None + if base_dir: + vcs = rabbitvcs.vcs.VCS() + git_config_files = [] + if vcs.is_in_a_or_a_working_copy(base_dir) and vcs.guess(base_dir)["vcs"] == rabbitvcs.vcs.VCS_GIT: + git = vcs.git(base_dir) + git_config_files = git.get_config_files(base_dir) + + self.file_editor = rabbitvcs.ui.widget.MultiFileTextEditor( + self.get_widget("git_config_container"), + _("Config file:"), + git_config_files, + git_config_files, + show_add_line=False + ) + show_git = True + + if show_git: + self.get_widget("pages").get_nth_page(5).show() + else: + self.get_widget("pages").get_nth_page(5).hide() + + self._populate_checker_tab() + + def _get_checker_service(self, report_failure=True): + checker_service = None + try: + session_bus = dbus.SessionBus() + checker_service = session_bus.get_object( + rabbitvcs.services.checkerservice.SERVICE, + rabbitvcs.services.checkerservice.OBJECT_PATH) + except dbus.DBusException, ex: + if report_failure: + rabbitvcs.ui.dialog.MessageBox(CHECKER_SERVICE_ERROR) + + return checker_service + + def _populate_checker_tab(self, report_failure=True): + # This is a limitation of GLADE, and can be removed when we migrate to + # GTK2 Builder + + checker_service = self._get_checker_service(report_failure) + + self.get_widget("restart_checker").set_image( + gtk.image_new_from_stock( + gtk.STOCK_EXECUTE, + gtk.ICON_SIZE_BUTTON)) + + self.get_widget("refresh_info").set_image( + gtk.image_new_from_stock( + gtk.STOCK_REFRESH, + gtk.ICON_SIZE_BUTTON)) + + self.get_widget("stop_checker").set_image( + gtk.image_new_from_stock( + gtk.STOCK_STOP, + gtk.ICON_SIZE_BUTTON)) + + self.get_widget("stop_checker").set_sensitive(bool(checker_service)) + + if(checker_service): + self.get_widget("checker_type").set_text(checker_service.CheckerType()) + self.get_widget("pid").set_text(str(checker_service.PID())) + + memory = checker_service.MemoryUsage() + + if memory: + self.get_widget("memory_usage").set_text("%s KB" % memory) + else: + self.get_widget("memory_usage").set_text(CHECKER_UNKNOWN_INFO) + + self._populate_info_table(checker_service.ExtraInformation()) + + else: + self.get_widget("checker_type").set_text(CHECKER_UNKNOWN_INFO) + self.get_widget("pid").set_text(CHECKER_UNKNOWN_INFO) + self.get_widget("memory_usage").set_text(CHECKER_UNKNOWN_INFO) + self._clear_info_table() + + def _clear_info_table(self): + info_table = self.get_widget("info_table_area").get_child() + + if info_table: + info_table.destroy() + + def _populate_info_table(self, info): + self._clear_info_table() + + table_place = self.get_widget("info_table_area") + + table = rabbitvcs.ui.widget.KeyValueTable(info) + table_place.add(table) + table.show() + + + def on_refresh_info_clicked(self, widget): + self._populate_checker_tab() + + def _stop_checker(self): + checker_service = self._get_checker_service(False) + pid = None + if(checker_service): + try: + pid = checker_service.Quit() + except dbus.exceptions.DBusException: + # Ignore it, it will necessarily happen when we kill the service + pass + if pid: + try: + os.waitpid(pid, 0) + except OSError: + # This occurs if the process is already gone. + pass + + def on_restart_checker_clicked(self, widget): + self._stop_checker() + rabbitvcs.services.checkerservice.start() + self._populate_checker_tab() + + def on_stop_checker_clicked(self, widget): + self._stop_checker() + self._populate_checker_tab(report_failure=False) def on_destroy(self, widget): gtk.main_quit() @@ -154,6 +288,9 @@ self.logging_level.get_active_text() ) self.settings.write() + + if self.file_editor: + self.file_editor.save() def on_external_diff_tool_browse_clicked(self, widget): chooser = rabbitvcs.ui.dialog.FileChooser( @@ -168,8 +305,8 @@ confirmation = rabbitvcs.ui.dialog.Confirmation( _("Are you sure you want to clear your repository paths?") ) - if confirmation.run() == 1: - path = rabbitvcs.lib.helper.get_repository_paths_path() + if confirmation.run() == gtk.RESPONSE_OK: + path = rabbitvcs.util.helper.get_repository_paths_path() fh = open(path, "w") fh.write("") fh.close() @@ -179,8 +316,8 @@ confirmation = rabbitvcs.ui.dialog.Confirmation( _("Are you sure you want to clear your previous messages?") ) - if confirmation.run() == 1: - path = rabbitvcs.lib.helper.get_previous_messages_path() + if confirmation.run() == gtk.RESPONSE_OK: + path = rabbitvcs.util.helper.get_previous_messages_path() fh = open(path, "w") fh.write("") fh.close() @@ -190,8 +327,8 @@ confirmation = rabbitvcs.ui.dialog.Confirmation( _("Are you sure you want to clear your authentication information?") ) - if confirmation.run() == 1: - home_dir = rabbitvcs.lib.helper.get_user_path() + if confirmation.run() == gtk.RESPONSE_OK: + home_dir = rabbitvcs.util.helper.get_user_path() subpaths = [ '/.subversion/auth/svn.simple', '/.subversion/auth/svn.ssl.server', @@ -209,6 +346,12 @@ if __name__ == "__main__": - window = Settings() + from rabbitvcs.ui import main, BASEDIR_OPT + (options, paths) = main( + [BASEDIR_OPT], + usage="Usage: rabbitvcs settings" + ) + + window = Settings(options.base_dir) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/stage.py rabbitvcs-0.15.0.5/rabbitvcs/ui/stage.py --- rabbitvcs-0.13.1/rabbitvcs/ui/stage.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/stage.py 2010-12-10 18:51:18.000000000 +0000 @@ -0,0 +1,146 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import thread + +import pygtk +import gobject +import gtk + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.add import Add +from rabbitvcs.ui.action import SVNAction +import rabbitvcs.ui.widget +import rabbitvcs.ui.dialog +import rabbitvcs.ui.action +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log + +import rabbitvcs.vcs + +log = Log("rabbitvcs.ui.stage") + +from rabbitvcs import gettext +_ = gettext.gettext + +class GitStage(Add): + def __init__(self, paths, base_dir=None): + InterfaceView.__init__(self, "add", "Add") + + self.window = self.get_widget("Add") + self.window.set_title(_("Stage")) + + self.paths = paths + self.base_dir = base_dir + self.last_row_clicked = None + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(self.paths[0]) + self.items = None + self.statuses = self.git.STATUSES_FOR_STAGE + self.files_table = rabbitvcs.ui.widget.Table( + self.get_widget("files_table"), + [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, + gobject.TYPE_STRING], + [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension")], + filters=[{ + "callback": rabbitvcs.ui.widget.path_filter, + "user_data": { + "base_dir": base_dir, + "column": 1 + } + }], + callbacks={ + "row-activated": self.on_files_table_row_activated, + "mouse-event": self.on_files_table_mouse_event, + "key-event": self.on_files_table_key_event + } + ) + + self.initialize_items() + + def populate_files_table(self): + self.files_table.clear() + for item in self.items: + self.files_table.append([ + True, + item.path, + rabbitvcs.util.helper.get_file_extension(item.path) + ]) + + def on_ok_clicked(self, widget): + items = self.files_table.get_activated_rows(1) + if not items: + self.close() + return + self.hide() + + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + + self.action.append(self.action.set_header, _("Stage")) + self.action.append(self.action.set_status, _("Running Stage Command...")) + for item in items: + self.action.append(self.git.stage, item) + self.action.append(self.action.set_status, _("Completed Stage")) + self.action.append(self.action.finish) + self.action.start() + +class GitStageQuiet: + def __init__(self, paths, base_dir=None): + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(paths[0]) + self.action = rabbitvcs.ui.action.GitAction( + self.git, + run_in_thread=False + ) + + for path in paths: + self.action.append(self.git.stage, path) + self.action.run() + +classes_map = { + rabbitvcs.vcs.VCS_GIT: GitStage +} + +quiet_classes_map = { + rabbitvcs.vcs.VCS_GIT: GitStageQuiet +} + +def stage_factory(classes_map, paths, base_dir=None): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths, base_dir) + +if __name__ == "__main__": + from rabbitvcs.ui import main, BASEDIR_OPT, QUIET_OPT + (options, paths) = main( + [BASEDIR_OPT, QUIET_OPT], + usage="Usage: rabbitvcs stage [path1] [path2] ..." + ) + + if options.quiet: + stage_factory(quiet_classes_map, paths) + else: + window = stage_factory(classes_map, paths, options.base_dir) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/switch.py rabbitvcs-0.15.0.5/rabbitvcs/ui/switch.py --- rabbitvcs-0.13.1/rabbitvcs/ui/switch.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/switch.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,37 +25,37 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.log import LogDialog -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.action import SVNAction import rabbitvcs.ui.widget import rabbitvcs.ui.dialog -import rabbitvcs.lib.helper +import rabbitvcs.util.helper from rabbitvcs import gettext _ = gettext.gettext -class Switch(InterfaceView): +class SVNSwitch(InterfaceView): def __init__(self, path, revision=None): InterfaceView.__init__(self, "switch", "Switch") self.path = path - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() self.get_widget("path").set_text(self.path) self.repositories = rabbitvcs.ui.widget.ComboBox( self.get_widget("repositories"), - rabbitvcs.lib.helper.get_repository_paths() + rabbitvcs.util.helper.get_repository_paths() ) self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( self.get_widget("revision_container"), - self.vcs, + self.svn, revision=revision, url_combobox=self.repositories, expand=True ) - self.repositories.set_child_text(self.vcs.get_repo_url(self.path)) + self.repositories.set_child_text(self.svn.get_repo_url(self.path)) def on_destroy(self, widget): self.destroy() @@ -72,16 +72,16 @@ revision = self.revision_selector.get_revision_object() self.hide() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Switch")) self.action.append(self.action.set_status, _("Running Switch Command...")) - self.action.append(rabbitvcs.lib.helper.save_repository_path, url) + self.action.append(rabbitvcs.util.helper.save_repository_path, url) self.action.append( - self.vcs.switch, + self.svn.switch, self.path, url, revision=revision @@ -90,6 +90,13 @@ self.action.append(self.action.finish) self.action.start() +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNSwitch +} + +def switch_factory(path, revision=None): + guess = rabbitvcs.vcs.guess(path) + return classes_map[guess["vcs"]](path, revision) if __name__ == "__main__": from rabbitvcs.ui import main, REVISION_OPT @@ -98,6 +105,6 @@ usage="Usage: rabbitvcs switch [url]" ) - window = Switch(args[0], revision=options.revision) + window = switch_factory(args[0], revision=options.revision) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/tags.py rabbitvcs-0.15.0.5/rabbitvcs/ui/tags.py --- rabbitvcs-0.13.1/rabbitvcs/ui/tags.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/tags.py 2010-12-29 15:51:16.000000000 +0000 @@ -0,0 +1,315 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os + +import pygtk +import gobject +import gtk +import pango + +from datetime import datetime +import time + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.action import GitAction +import rabbitvcs.ui.widget +from rabbitvcs.ui.dialog import DeleteConfirmation +from rabbitvcs.ui.log import log_dialog_factory +import rabbitvcs.util.helper +import rabbitvcs.vcs + +from rabbitvcs import gettext +_ = gettext.gettext + +STATE_ADD = 0 +STATE_EDIT = 1 + +class GitTagManager(InterfaceView): + """ + Provides a UI interface to manage items + + """ + + state = STATE_ADD + + def __init__(self, path, revision=None): + InterfaceView.__init__(self, "manager", "Manager") + + self.path = path + + self.get_widget("right_side").show() + self.get_widget("Manager").set_size_request(695, -1) + self.get_widget("Manager").set_title(_("Tag Manager")) + self.get_widget("items_label").set_markup(_("Tags")) + + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(path) + + self.revision_obj = self.git.revision(revision) + + self.selected_tag = None + self.items_treeview = rabbitvcs.ui.widget.Table( + self.get_widget("items_treeview"), + [gobject.TYPE_STRING], + [_("Tag")], + callbacks={ + "mouse-event": self.on_treeview_mouse_event, + "key-event": self.on_treeview_key_event + }, + flags={ + "sortable": True, + "sort_on": 0 + } + ) + self.initialize_detail() + self.load(self.show_add) + + def on_destroy(self, widget): + self.destroy() + + def on_close_clicked(self, widget): + self.close() + + def initialize_detail(self): + self.detail_container = self.get_widget("detail_container") + + vbox = gtk.VBox(False, 6) + + # Set up the Tag line + label = gtk.Label(_("Name:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=.5) + self.tag_entry = gtk.Entry() + self.tag_name_container = gtk.HBox(False, 0) + self.tag_name_container.pack_start(label, False, False, 0) + self.tag_name_container.pack_start(self.tag_entry, False, False, 0) + vbox.pack_start(self.tag_name_container, False, False, 0) + + # Set up the Commit-sha line + label = gtk.Label(_("Revision:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=.5) + self.start_point_entry = gtk.Entry() + self.start_point_entry.set_size_request(300, -1) + self.start_point_container = gtk.HBox(False, 0) + if self.revision_obj.value: + self.start_point_entry.set_text(unicode(self.revision_obj)) + self.log_dialog_button = gtk.Button() + self.log_dialog_button.connect("clicked", self.on_log_dialog_button_clicked) + image = gtk.Image() + image.set_from_icon_name("rabbitvcs-show_log", 2) + self.log_dialog_button.set_image(image) + self.start_point_container.pack_start(label, False, False, 0) + self.start_point_container.pack_start(self.start_point_entry, False, False, 0) + self.start_point_container.pack_start(self.log_dialog_button, False, False, 0) + vbox.pack_start(self.start_point_container, False, False, 0) + + # Set up the Log Message Entry line + label = gtk.Label(_("Message:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=0) + self.message_entry = rabbitvcs.ui.widget.TextView() + self.message_entry.view.set_size_request(300, 75) + swin = gtk.ScrolledWindow() + swin.set_shadow_type(gtk.SHADOW_ETCHED_IN) + swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + swin.add(self.message_entry.view) + self.message_entry_container = gtk.HBox(False, 0) + self.message_entry_container.pack_start(label, False, False, 0) + self.message_entry_container.pack_start(swin, False, False, 0) + vbox.pack_start(self.message_entry_container, False, False, 0) + + # Set up Save button + label = gtk.Label("") + label.set_size_request(90, -1) + self.save_button = gtk.Button(label=_("Save")) + self.save_button.connect("clicked", self.on_save_clicked) + self.save_container = gtk.HBox(False, 0) + self.save_container.pack_start(label, False, False, 0) + self.save_container.pack_start(self.save_button, False, False, 0) + vbox.pack_start(self.save_container, False, False, 0) + + # Set up the tagger line + label = gtk.Label(_("Tagger:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=0) + self.tagger_label = gtk.Label("") + self.tagger_label.set_properties(xalign=0,yalign=0,selectable=True) + self.tagger_label.set_line_wrap(True) + self.tagger_container = gtk.HBox(False, 0) + self.tagger_container.pack_start(label, False, False, 0) + self.tagger_container.pack_start(self.tagger_label, False, False, 0) + vbox.pack_start(self.tagger_container, False, False, 0) + + # Set up the Date line + label = gtk.Label(_("Date:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=0) + self.date_label = gtk.Label("") + self.date_label.set_properties(xalign=0,yalign=0,selectable=True) + self.date_container = gtk.HBox(False, 0) + self.date_container.pack_start(label, False, False, 0) + self.date_container.pack_start(self.date_label, False, False, 0) + vbox.pack_start(self.date_container, False, False, 0) + + # Set up the Revision line + label = gtk.Label(_("Revision:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=0) + self.revision_label = gtk.Label("") + self.revision_label.set_properties(xalign=0,selectable=True) + self.revision_label.set_line_wrap(True) + self.revision_container = gtk.HBox(False, 0) + self.revision_container.pack_start(label, False, False, 0) + self.revision_container.pack_start(self.revision_label, False, False, 0) + vbox.pack_start(self.revision_container, False, False, 0) + + # Set up the Log Message line + label = gtk.Label(_("Message:")) + label.set_size_request(90, -1) + label.set_properties(xalign=0,yalign=0) + self.message_label = gtk.Label("") + self.message_label.set_properties(xalign=0,yalign=0,selectable=True) + self.message_label.set_line_wrap(True) + self.message_label.set_size_request(250, -1) + self.message_container = gtk.HBox(False, 0) + self.message_container.pack_start(label, False, False, 0) + self.message_container.pack_start(self.message_label, False, False, 0) + vbox.pack_start(self.message_container, False, False, 0) + + self.add_containers = [self.tag_name_container, self.message_entry_container, + self.start_point_container, self.save_container] + + self.view_containers = [self.tag_name_container, self.tagger_container, + self.date_container, self.revision_container, self.message_container] + + self.all_containers = [self.tag_name_container, self.tagger_container, + self.date_container, self.revision_container, self.message_container, + self.message_entry_container, self.save_container, self.start_point_container] + + vbox.show() + self.detail_container.add(vbox) + + def load(self, callback, *args, **kwargs): + self.items_treeview.clear() + + self.tag_list = self.git.tag_list() + + for item in self.tag_list: + self.items_treeview.append([item.name]) + + if callback: + callback(*args, **kwargs) + + def on_add_clicked(self, widget): + self.show_add() + + def on_delete_clicked(self, widget): + selected = self.items_treeview.get_selected_row_items(0) + + confirm = rabbitvcs.ui.dialog.Confirmation(_("Are you sure you want to delete %s?" % ", ".join(selected))) + result = confirm.run() + + if result == gtk.RESPONSE_OK or result == True: + for tag in selected: + self.git.tag_delete(tag) + + self.load(self.show_add) + + def on_save_clicked(self, widget): + tag_name = self.tag_entry.get_text() + tag_message = self.message_entry.get_text() + tag_revision = self.git.revision(self.start_point_entry.get_text()) + + self.git.tag(tag_name, tag_message, tag_revision) + self.load(self.show_detail, tag_name) + + def on_treeview_key_event(self, treeview, data=None): + if gtk.gdk.keyval_name(data.keyval) in ("Up", "Down", "Return"): + self.on_treeview_event(treeview, data) + + def on_treeview_mouse_event(self, treeview, data=None): + self.on_treeview_event(treeview, data) + + def on_treeview_event(self, treeview, data): + selected = self.items_treeview.get_selected_row_items(0) + if len(selected) > 0: + if len(selected) == 1: + self.show_detail(selected[0]) + self.get_widget("delete").set_sensitive(True) + else: + self.show_add() + + def show_containers(self, containers): + for container in self.all_containers: + container.hide() + for container in containers: + container.show_all() + + def show_add(self): + self.items_treeview.unselect_all() + self.tag_entry.set_text("") + self.message_entry.set_text("") + self.save_button.set_label(_("Add")) + self.show_containers(self.add_containers) + self.get_widget("detail_label").set_markup(_("Add Tag")) + + def show_detail(self, tag_name): + self.selected_tag = None + for item in self.tag_list: + if item.name == tag_name: + self.selected_tag = item + break + + self.save_button.set_label(_("Save")) + if self.selected_tag: + self.tag_entry.set_text(self.selected_tag.name) + self.revision_label.set_text(self.selected_tag.sha) + self.message_label.set_text(self.selected_tag.message.rstrip("\n")) + self.tagger_label.set_text(self.selected_tag.tagger) + self.date_label.set_text(rabbitvcs.util.helper.format_datetime(datetime.fromtimestamp(self.selected_tag.tag_time))) + + self.show_containers(self.view_containers) + self.get_widget("detail_label").set_markup(_("Tag Detail")) + + + def on_log_dialog_button_clicked(self, widget): + log_dialog_factory( + self.path, + ok_callback=self.on_log_dialog_closed + ) + + def on_log_dialog_closed(self, data): + if data: + self.start_point_entry.set_text(data) + +if __name__ == "__main__": + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT + (options, paths) = main( + [REVISION_OPT, VCS_OPT], + usage="Usage: rabbitvcs tag-manager path" + ) + + window = GitTagManager(paths[0], options.revision) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/unlock.py rabbitvcs-0.15.0.5/rabbitvcs/ui/unlock.py --- rabbitvcs-0.13.1/rabbitvcs/ui/unlock.py 2009-11-30 17:19:34.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/unlock.py 2010-12-28 16:34:08.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,19 +28,19 @@ from rabbitvcs.ui import InterfaceView, InterfaceNonView from rabbitvcs.ui.add import Add -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui.action import SVNAction import rabbitvcs.ui.widget import rabbitvcs.ui.dialog import rabbitvcs.ui.action -import rabbitvcs.lib.helper -from rabbitvcs.lib.log import Log +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.unlock") from rabbitvcs import gettext _ = gettext.gettext -class Unlock(Add): +class SVNUnlock(Add): def __init__(self, paths, base_dir): InterfaceView.__init__(self, "add", "Add") @@ -50,7 +50,8 @@ self.paths = paths self.base_dir = base_dir self.last_row_clicked = None - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() self.items = None self.statuses = None self.files_table = rabbitvcs.ui.widget.Table( @@ -87,18 +88,21 @@ gtk.gdk.threads_leave() def populate_files_table(self): + self.files_table.clear() + found = 0 for item in self.items: - if item.text_status in (self.vcs.STATUS["unversioned"], self.vcs.STATUS["ignored"]): + # FIXME: ... + if item.simple_content_status() in (rabbitvcs.vcs.status.status_unversioned, rabbitvcs.vcs.status.status_ignored): continue - if not self.vcs.is_locked(item.path): + if not self.svn.is_locked(item.path): continue self.files_table.append([ True, item.path, - rabbitvcs.lib.helper.get_file_extension(item.path) + rabbitvcs.util.helper.get_file_extension(item.path) ]) found += 1 @@ -115,41 +119,55 @@ return self.hide() - self.action = rabbitvcs.ui.action.VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Unlock")) self.action.append(self.action.set_status, _("Running Unlock Command...")) for item in items: - self.action.append(self.vcs.unlock, item, force=True) + self.action.append(self.svn.unlock, item, force=True) self.action.append(self.action.set_status, _("Completed Unlock")) self.action.append(self.action.finish) self.action.start() -class UnlockQuick(InterfaceNonView): +class SVNUnlockQuiet: """ This class provides a handler to unlock functionality. """ - def __init__(self, paths): - InterfaceNonView.__init__(self) - self.path = paths - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + def __init__(self, paths, base_dir=None): + self.paths = paths + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() - def start(self): for path in self.paths: - self.vcs.unlock(self.paths, force=True) - + self.svn.unlock(path, force=True) + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNUnlock +} + +quiet_classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNUnlockQuiet +} + +def unlock_factory(cmap, paths, base_dir=None): + guess = rabbitvcs.vcs.guess(paths[0]) + return cmap[guess["vcs"]](paths, base_dir) + if __name__ == "__main__": - from rabbitvcs.ui import main, BASEDIR_OPT + from rabbitvcs.ui import main, BASEDIR_OPT, QUIET_OPT (options, paths) = main( - [BASEDIR_OPT], + [BASEDIR_OPT, QUIET_OPT], usage="Usage: rabbitvcs unlock [path1] [path2] ..." ) - window = Unlock(paths, options.base_dir) - window.register_gtk_quit() - gtk.main() + if options.quiet: + unlock_factory(quiet_classes_map, paths) + else: + window = unlock_factory(classes_map, paths, options.base_dir) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/unstage.py rabbitvcs-0.15.0.5/rabbitvcs/ui/unstage.py --- rabbitvcs-0.13.1/rabbitvcs/ui/unstage.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/unstage.py 2010-12-10 18:51:18.000000000 +0000 @@ -0,0 +1,146 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import thread + +import pygtk +import gobject +import gtk + +from rabbitvcs.ui import InterfaceView +from rabbitvcs.ui.add import Add +from rabbitvcs.ui.action import SVNAction +import rabbitvcs.ui.widget +import rabbitvcs.ui.dialog +import rabbitvcs.ui.action +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log + +import rabbitvcs.vcs + +log = Log("rabbitvcs.ui.unstage") + +from rabbitvcs import gettext +_ = gettext.gettext + +class GitUnstage(Add): + def __init__(self, paths, base_dir=None): + InterfaceView.__init__(self, "add", "Add") + + self.window = self.get_widget("Add") + self.window.set_title(_("Unstage")) + + self.paths = paths + self.base_dir = base_dir + self.last_row_clicked = None + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(self.paths[0]) + self.items = None + self.statuses = self.git.STATUSES_FOR_UNSTAGE + self.files_table = rabbitvcs.ui.widget.Table( + self.get_widget("files_table"), + [gobject.TYPE_BOOLEAN, rabbitvcs.ui.widget.TYPE_PATH, + gobject.TYPE_STRING], + [rabbitvcs.ui.widget.TOGGLE_BUTTON, _("Path"), _("Extension")], + filters=[{ + "callback": rabbitvcs.ui.widget.path_filter, + "user_data": { + "base_dir": base_dir, + "column": 1 + } + }], + callbacks={ + "row-activated": self.on_files_table_row_activated, + "mouse-event": self.on_files_table_mouse_event, + "key-event": self.on_files_table_key_event + } + ) + + self.initialize_items() + + def populate_files_table(self): + self.files_table.clear() + for item in self.items: + self.files_table.append([ + True, + item.path, + rabbitvcs.util.helper.get_file_extension(item.path) + ]) + + def on_ok_clicked(self, widget): + items = self.files_table.get_activated_rows(1) + if not items: + self.close() + return + self.hide() + + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + + self.action.append(self.action.set_header, _("Unstage")) + self.action.append(self.action.set_status, _("Running Unstage Command...")) + for item in items: + self.action.append(self.git.unstage, item) + self.action.append(self.action.set_status, _("Completed Unstage")) + self.action.append(self.action.finish) + self.action.start() + +class GitUnstageQuiet: + def __init__(self, paths, base_dir=None): + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(paths[0]) + self.action = rabbitvcs.ui.action.GitAction( + self.git, + run_in_thread=False + ) + + for path in paths: + self.action.append(self.git.unstage, path) + self.action.run() + +classes_map = { + rabbitvcs.vcs.VCS_GIT: GitUnstage +} + +quiet_classes_map = { + rabbitvcs.vcs.VCS_GIT: GitUnstageQuiet +} + +def unstage_factory(classes_map, paths, base_dir=None): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths, base_dir) + +if __name__ == "__main__": + from rabbitvcs.ui import main, BASEDIR_OPT, QUIET_OPT + (options, paths) = main( + [BASEDIR_OPT, QUIET_OPT], + usage="Usage: rabbitvcs unstage [path1] [path2] ..." + ) + + if options.quiet: + unstage_factory(quiet_classes_map, paths) + else: + window = unstage_factory(classes_map, paths, options.base_dir) + window.register_gtk_quit() + gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/update.py rabbitvcs-0.15.0.5/rabbitvcs/ui/update.py --- rabbitvcs-0.13.1/rabbitvcs/ui/update.py 2009-11-13 17:47:25.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/update.py 2010-12-10 00:06:15.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,16 +24,15 @@ import gobject import gtk -from rabbitvcs.ui import InterfaceNonView -from rabbitvcs.ui.log import LogDialog -from rabbitvcs.ui.action import VCSAction +from rabbitvcs.ui import InterfaceNonView, InterfaceView +from rabbitvcs.ui.action import SVNAction, GitAction import rabbitvcs.ui.widget import rabbitvcs.ui.dialog from rabbitvcs import gettext _ = gettext.gettext -class Update(InterfaceNonView): +class SVNUpdate(InterfaceNonView): """ This class provides an interface to generate an "update". Pass it a path and it will start an update, running the notification dialog. @@ -43,25 +42,83 @@ def __init__(self, paths): self.paths = paths - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() + self.vcs = rabbitvcs.vcs.VCS() + self.svn = self.vcs.svn() def start(self): - self.action = VCSAction( - self.vcs, + self.action = SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) self.action.append(self.action.set_header, _("Update")) self.action.append(self.action.set_status, _("Updating...")) - self.action.append(self.vcs.update, self.paths) + self.action.append(self.svn.update, self.paths) self.action.append(self.action.set_status, _("Completed Update")) self.action.append(self.action.finish) self.action.start() +class GitUpdate(InterfaceView): + """ + This class provides an interface to generate an "update". + Pass it a path and it will start an update, running the notification dialog. + There is no glade . + + """ + + def __init__(self, paths): + InterfaceView.__init__(self, "git-update", "Update") + + self.paths = paths + self.vcs = rabbitvcs.vcs.VCS() + self.git = self.vcs.git(paths[0]) + + self.repository_selector = rabbitvcs.ui.widget.GitRepositorySelector( + self.get_widget("repository_container"), + self.git + ) + + def on_destroy(self, widget): + self.destroy() + + def on_cancel_clicked(self, widget, data=None): + self.close() + + def on_ok_clicked(self, widget, data=None): + self.hide() + merge = self.get_widget("merge").get_active() + + repository = self.repository_selector.repository_opt.get_active_text() + branch = self.repository_selector.branch_opt.get_active_text() + + self.action = GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + self.action.append(self.action.set_header, _("Update")) + self.action.append(self.action.set_status, _("Updating...")) + if merge: + self.action.append(self.git.pull, repository, branch) + else: + self.action.append(self.git.fetch, repository, branch) + self.action.append(self.action.set_status, _("Completed Update")) + self.action.append(self.action.finish) + self.action.start() + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNUpdate, + rabbitvcs.vcs.VCS_GIT: GitUpdate +} + +def update_factory(paths): + guess = rabbitvcs.vcs.guess(paths[0]) + return classes_map[guess["vcs"]](paths) + if __name__ == "__main__": from rabbitvcs.ui import main (options, paths) = main(usage="Usage: rabbitvcs update [path1] [path2] ...") - window = Update(paths) + window = update_factory(paths) window.register_gtk_quit() - window.start() + if isinstance(window, SVNUpdate): + window.start() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/updateto.py rabbitvcs-0.15.0.5/rabbitvcs/ui/updateto.py --- rabbitvcs-0.13.1/rabbitvcs/ui/updateto.py 2010-03-25 20:15:47.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/updateto.py 2010-12-29 15:51:16.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,8 +25,7 @@ import gtk from rabbitvcs.ui import InterfaceView -from rabbitvcs.ui.log import LogDialog -from rabbitvcs.ui.action import VCSAction +import rabbitvcs.ui.action import rabbitvcs.ui.widget import rabbitvcs.ui.dialog @@ -44,15 +43,7 @@ InterfaceView.__init__(self, "update", "Update") self.path = path self.revision = revision - self.vcs = rabbitvcs.lib.vcs.create_vcs_instance() - - self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( - self.get_widget("revision_container"), - self.vcs, - revision=revision, - url=self.path, - expand=True - ) + self.vcs = rabbitvcs.vcs.VCS() def on_destroy(self, widget): self.destroy() @@ -60,37 +51,123 @@ def on_cancel_clicked(self, widget): self.close() +class SVNUpdateToRevision(UpdateToRevision): + def __init__(self, path, revision): + UpdateToRevision.__init__(self, path, revision) + + self.svn = self.vcs.svn() + + self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("revision_container"), + self.svn, + revision=revision, + url=self.path, + expand=True, + revision_changed_callback=self.on_revision_changed + ) + def on_ok_clicked(self, widget): revision = self.revision_selector.get_revision_object() recursive = self.get_widget("recursive").get_active() omit_externals = self.get_widget("omit_externals").get_active() + rollback = self.get_widget("rollback").get_active() - self.action = VCSAction( - self.vcs, + self.action = rabbitvcs.ui.action.SVNAction( + self.svn, register_gtk_quit=self.gtk_quit_is_set() ) - self.action.append(self.action.set_header, _("Update To Revision")) - self.action.append(self.action.set_status, _("Updating...")) - self.action.append( - self.vcs.update, - self.path, + if rollback: + self.action.append(self.action.set_header, _("Rollback To Revision")) + self.action.append(self.action.set_status, _("Rolling Back...")) + self.action.append( + self.svn.merge_ranges, + self.svn.get_repo_url(self.path), + [(self.svn.revision("HEAD").primitive(), revision.primitive())], + self.svn.revision("head"), + self.path + ) + self.action.append(self.action.set_status, _("Completed Rollback")) + else: + self.action.append(self.action.set_header, _("Update To Revision")) + self.action.append(self.action.set_status, _("Updating...")) + self.action.append( + self.svn.update, + self.path, + revision=revision, + recurse=recursive, + ignore_externals=omit_externals + ) + self.action.append(self.action.set_status, _("Completed Update")) + + self.action.append(self.action.finish) + self.action.start() + + def on_revision_changed(self, revision_selector): + # Only allow rollback when a revision number is specified + if (revision_selector.revision_kind_opt.get_active() == 1 + and revision_selector.revision_entry.get_text() != ""): + self.get_widget("rollback").set_sensitive(True) + else: + self.get_widget("rollback").set_sensitive(False) + +class GitUpdateToRevision(UpdateToRevision): + def __init__(self, path, revision): + UpdateToRevision.__init__(self, path, revision) + + self.git = self.vcs.git(path) + + self.revision_selector = rabbitvcs.ui.widget.RevisionSelector( + self.get_widget("revision_container"), + self.git, revision=revision, - recurse=recursive, - ignore_externals=omit_externals + url=self.path, + expand=True, + revision_changed_callback=self.on_revision_changed ) - self.action.append(self.action.set_status, _("Completed Update")) + + def on_ok_clicked(self, widget): + revision = self.revision_selector.get_revision_object() + + self.action = rabbitvcs.ui.action.GitAction( + self.git, + register_gtk_quit=self.gtk_quit_is_set() + ) + + self.action.append(self.action.set_header, _("Checkout")) + self.action.append(self.action.set_status, _("Checking out %s..." % revision)) + self.action.append( + self.git.checkout, + [self.path], + revision + ) + self.action.append(self.action.set_status, _("Completed Checkout")) self.action.append(self.action.finish) self.action.start() + def on_revision_changed(self, revision_selector): + pass + +classes_map = { + rabbitvcs.vcs.VCS_SVN: SVNUpdateToRevision, + rabbitvcs.vcs.VCS_GIT: GitUpdateToRevision, +} + +def updateto_factory(vcs, path, revision=None): + if not vcs: + guess = rabbitvcs.vcs.guess(path) + vcs = guess["vcs"] + + return classes_map[vcs](path, revision) + if __name__ == "__main__": - from rabbitvcs.ui import main, REVISION_OPT + from rabbitvcs.ui import main, REVISION_OPT, VCS_OPT (options, args) = main( - [REVISION_OPT], + [REVISION_OPT, VCS_OPT], usage="Usage: rabbitvcs updateto [path]" ) - window = UpdateToRevision(args[0], revision=options.revision) + window = updateto_factory(options.vcs, args[0], revision=options.revision) window.register_gtk_quit() gtk.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/widget.py rabbitvcs-0.15.0.5/rabbitvcs/ui/widget.py --- rabbitvcs-0.13.1/rabbitvcs/ui/widget.py 2010-01-25 15:28:43.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/widget.py 2011-11-09 19:09:27.000000000 +0000 @@ -4,7 +4,7 @@ # # Copyright (C) 2006-2008 by Jason Field # Copyright (C) 2007-2008 by Bruce van der Kooij -# Copyright (C) 2008-2008 by Adam Plumb +# Copyright (C) 2008-2010 by Adam Plumb # # RabbitVCS is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,46 +20,88 @@ # along with RabbitVCS; If not, see . # -import pygtk -import gobject -import gtk - -import os.path - try: - import gtkspell - HAS_GTKSPELL = True + from gi.repository import GObject as gobject except ImportError: - HAS_GTKSPELL = False + import gobject +import os +if "NAUTILUS_PYTHON_REQUIRE_GTK3" in os.environ and os.environ["NAUTILUS_PYTHON_REQUIRE_GTK3"]: + from gi.repository import Gtk as gtk + GTK_FILL = gtk.AttachOptions.FILL + GTK_EXPAND = gtk.AttachOptions.EXPAND + GTK3 = True +else: + import gtk + GTK_FILL = gtk.FILL + GTK_EXPAND = gtk.EXPAND + GTK3 = False + +# GI Pango is broken in some versions of pygobject 2.28.x, if that is the case +# set HAS_PANGO to false and do without ellipsizing for now +HAS_PANGO = True try: - import gtksourceview - HAS_GTKSOURCEVIEW = True + from gi.repository import Pango as pango + PANGO_ELLIPSIZE_MIDDLE = pango.EllipsizeMode.MIDDLE + PANGO_ELLIPSIZE_END = pango.EllipsizeMode.END except ImportError: - HAS_GTKSOURCEVIEW = False + import pango + PANGO_ELLIPSIZE_MIDDLE = pango.ELLIPSIZE_MIDDLE + PANGO_ELLIPSIZE_END = pango.ELLIPSIZE_END +except AttributeError: + HAS_PANGO = False + pass + + +import os.path -import rabbitvcs.lib.helper +HAS_GTKSPELL = False +if not GTK3: + try: + import gtkspell + HAS_GTKSPELL = True + except ImportError: + pass + +HAS_GTKSOURCEVIEW = False +if not GTK3: + try: + import gtksourceview + HAS_GTKSOURCEVIEW = True + except ImportError: + pass + +import rabbitvcs.util.helper from rabbitvcs import gettext _ = gettext.gettext -from rabbitvcs.lib.log import Log +from rabbitvcs.util.log import Log log = Log("rabbitvcs.ui.widget") +from rabbitvcs.ui import STATUS_EMBLEMS + TOGGLE_BUTTON = 'TOGGLE_BUTTON' TYPE_PATH = 'TYPE_PATH' +TYPE_STATUS = 'TYPE_STATUS' +TYPE_ELLIPSIZED = 'TYPE_ELLIPSIZED' +TYPE_GRAPH = 'TYPE_GRAPH' +TYPE_MARKUP = 'TYPE_MARKUP' + +ELLIPSIZE_COLUMN_CHARS = 20 + PATH_ENTRY = 'PATH_ENTRY' SEPARATOR = u'\u2015' * 10 from pprint import pformat - def filter_router(model, iter, column, filters): """ Route filter requests for a table's columns. This function is called for each cell of the table that gets displayed. - @type model: gtk.TreeModelFilter - @param model: The TreeModelFilter instance for our table + @type model: gtk.TreeModelFilter or gtk.TreeModelSort + @param model: The TreeModelFilter or gtk.TreeModelSort instance for our + table @type iter: gtk.TreeIter @param iter: The TreeIter instance for the table row being filtered @@ -85,8 +127,11 @@ @return The filtered output defined for the given column """ + real_model = model.get_model() - row = model.get_model()[model.get_path(iter)] + real_iter = model.convert_iter_to_child_iter(iter) + + row = real_model[real_model.get_path(real_iter)] if not filters: return row[column] @@ -119,7 +164,7 @@ base_dir = user_data["base_dir"] if row[column]: - relpath = rabbitvcs.lib.helper.get_relative_path(base_dir, row[column]) + relpath = rabbitvcs.util.helper.get_relative_path(base_dir, row[column]) if relpath == "": relpath = os.path.basename(row[column]) return relpath @@ -134,14 +179,58 @@ cols = user_data["cols"] + if text: - text = rabbitvcs.lib.helper.format_long_text(text, cols) + text = rabbitvcs.util.helper.format_long_text(text, cols) return text +def git_revision_filter(row, column, user_data=None): + """ + Only show the first six characters of a git revision hash + """ + + text = row[column] + if text: + if text.startswith(""): + text = text[3:10] + else: + text = text[0:7] + + return text + +def translate_filter(row, column, user_data=None): + """ + Translates text as needed. + """ + text = row[column] + if text: return _(text) + +def compare_items(model, iter1, iter2, user_data=None): + + if not user_data: + # No column data given => Give up + return 0 + + colnum, coltype = user_data + + real_model = model.get_model() + real_iter1 = model.convert_iter_to_child_iter(iter1) + real_iter2 = model.convert_iter_to_child_iter(iter2) + + value1 = real_model.get_value(real_iter1, colnum) + value2 = real_model.get_value(real_iter2, colnum) + + if value1 == value2: + return 0 + elif value1 < value2: + return -1 + else: + return 1 + class TableBase: - def __init__(self, treeview, coltypes, colnames, values=[], filters=None, - filter_types=None, callbacks={}): + def __init__(self, treeview, coltypes, colnames, values=[], filters=None, + filter_types=None, callbacks={}, flags={}): """ @type treeview: gtk.Treeview @param treeview: The treeview widget to use @@ -177,7 +266,29 @@ @param callbacks: A dict of callbacks to be used. Some are for signal handling while others are useful for other things. + @type flags: dict + @param flags: A dict of flags + + FLAGS: + @type sortable: boolean + @param sortable: whether the columns can be sorted + + @type sort_on: int + @param sort_on: the column number to initially sort by + + @type editable: list + @param editable: A list of which columns are editable + """ + + from renderers.graphcell import CellRendererGraph + + if not flags.has_key("sortable"): + flags["sortable"] = False + if not flags.has_key("sort_on"): + flags["sort_on"] = -1 + if not flags.has_key("editable"): + flags["editable"] = () self.treeview = treeview self.selected_rows = [] @@ -187,8 +298,14 @@ if coltypes[i] == gobject.TYPE_BOOLEAN: cell = gtk.CellRendererToggle() cell.set_property('activatable', True) + cell.set_property('xalign', 0) cell.connect("toggled", self.toggled_cb, i) - col = gtk.TreeViewColumn("", cell) + + colname = "" + if name != TOGGLE_BUTTON: + colname = name + + col = gtk.TreeViewColumn(colname, cell) col.set_attributes(cell, active=i) elif coltypes[i] == TYPE_PATH: # The type should be str but we have to use TYPE_PATH to @@ -212,7 +329,7 @@ } else: data = { - "callback": rabbitvcs.lib.helper.get_node_kind, + "callback": rabbitvcs.util.helper.get_node_kind, "column": i } col.set_cell_data_func(cellpb, self.file_pixbuf, data) @@ -222,18 +339,67 @@ cell.set_property('yalign', 0) col.pack_start(cell, False) col.set_attributes(cell, text=i) - else: + elif coltypes[i] == TYPE_STATUS: + # Same as for TYPE_PATH + coltypes[i] = str + col = gtk.TreeViewColumn(name) + + cellpb = gtk.CellRendererPixbuf() + cellpb.set_property('xalign', 0) + cellpb.set_property('yalign', 0) + + col.pack_start(cellpb, False) + + data = None + + col.set_cell_data_func(cellpb, self.status_pixbuf, i) + + cell = gtk.CellRendererText() + cell.set_property('xalign', 0) + cell.set_property('yalign', 0) + col.pack_start(cell, False) + col.set_attributes(cell, text=i) + elif coltypes[i] == TYPE_ELLIPSIZED: + coltypes[i] = str cell = gtk.CellRendererText() cell.set_property('yalign', 0) cell.set_property('xalign', 0) + if HAS_PANGO: + cell.set_property('ellipsize', PANGO_ELLIPSIZE_END) + cell.set_property('width-chars', ELLIPSIZE_COLUMN_CHARS) col = gtk.TreeViewColumn(name, cell) col.set_attributes(cell, text=i) + elif coltypes[i] == TYPE_GRAPH: + coltypes[i] = gobject.TYPE_PYOBJECT + cell = CellRendererGraph() + col = gtk.TreeViewColumn(name, cell) + col.add_attribute(cell, "graph", i) + else: + cell = gtk.CellRendererText() + cell.set_property('yalign', 0) + cell.set_property('xalign', 0) + if i in flags["editable"]: + cell.set_property('editable', True) + cell.connect("edited", self.__cell_edited, i) + + if coltypes[i] == TYPE_MARKUP: + col = gtk.TreeViewColumn(name, cell, markup=i) + else: + col = gtk.TreeViewColumn(name, cell, text=i) + + coltypes[i] = gobject.TYPE_STRING + + if flags["sortable"]: + col.set_sort_column_id(i) self.treeview.append_column(col) i += 1 self.data = self.get_store(coltypes) - + + self.sorted = None + + # self.sorted == sorted view of data # self.filter == filtered data (abs paths -> rel paths) # self.data == actual data @@ -245,9 +411,30 @@ types, filter_router, filters) - - self.treeview.set_model(self.filter) + + # This runs through the columns, and sets the "compare_items" comparator + # as needed. Note that the user data tells which column to sort on. + if flags["sortable"]: + self.sorted = gtk.TreeModelSort(self.filter) + + self.sorted.set_default_sort_func(compare_items, None) + + for idx in range(0, i): + self.sorted.set_sort_func(idx, + compare_items, + (idx, coltypes[idx])) + + self.sorted.set_sort_column_id(flags["sort_on"], gtk.SORT_ASCENDING) + + self.treeview.set_model(self.sorted) + + elif filters: + self.treeview.set_model(self.filter) + else: + self.treeview.set_model(self.data) + + if len(values) > 0: self.populate(values) @@ -260,13 +447,31 @@ self.treeview.connect("button-press-event", self.__button_press_event) self.treeview.connect("button-release-event", self.__button_release_event) self.treeview.connect("key-press-event", self.__key_press_event) + self.treeview.connect("select-cursor-row", self.__row_selected) self.callbacks = callbacks if self.callbacks: self.allow_multiple() + def _realpath(self, visible_path): + """ + Converts a path (ie. row number) that we get from what the user selects + into a path for the underlying data structure. If the data is not + sorted, this is trivial; if it is sorted, the sorting model can figure + it out for us. + """ + if self.sorted: + path = self.sorted.convert_path_to_child_path(visible_path) + else: + path = self.filter.convert_path_to_child_path(visible_path) + return path + def toggled_cb(self, cell, path, column): model = self.data - model[path][column] = not model[path][column] + realpath = self._realpath(path) + model[realpath][column] = not model[realpath][column] + if "row-toggled" in self.callbacks: + self.callbacks["row-toggled"](model[realpath], column) + def append(self, row): self.data.append(row) @@ -306,7 +511,7 @@ def allow_multiple(self): self.treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE) - + def get_activated_rows(self, column=None): returner = [] for row in self.data: @@ -327,6 +532,9 @@ for col in self.treeview.get_columns(): col.set_resizable(resizable) + def get_column(self, column): + return self.treeview.get_column(column) + def set_column_width(self, column, width=None): col = self.treeview.get_column(column) if width is not None: @@ -340,8 +548,9 @@ (liststore, indexes) = selection.get_selected_rows() self.reset_selection() + for tup in indexes: - self.selected_rows.append(tup[0]) + self.selected_rows.append(self._realpath(tup)[0]) def reset_selection(self): self.selected_rows = [] @@ -355,6 +564,24 @@ def get_selected_rows(self): return self.selected_rows + + def generate_string_from_data(self): + lines = [] + for row in self.data: + line = [] + for cell in row: + line.append(unicode(cell)) + lines.append("\t".join(line)) + + return "\n".join(lines) + + def unselect_all(self): + self.treeview.get_selection().unselect_all() + + def focus(self, row, column): + treecol = self.treeview.get_column(column) + self.treeview.set_cursor((row,), treecol) + self.treeview.grab_focus() def __button_press_event(self, treeview, data): info = treeview.get_path_at_pos(int(data.x), int(data.y)) @@ -383,6 +610,11 @@ self.update_selection() if "row-activated" in self.callbacks: self.callbacks["row-activated"](treeview, data, col) + + def __row_selected(self, treeview, started_editing): + self.update_selection() + if "row-selected" in self.callbacks: + self.callbacks["row-selected"](treeview, started_editing) def __key_press_event(self, treeview, data): self.update_selection() @@ -391,6 +623,8 @@ def __cursor_changed_event(self, treeview): self.update_selection() + if "cursor-changed" in self.callbacks: + self.callbacks["cursor-changed"](treeview) if "mouse-event" in self.callbacks: self.callbacks["mouse-event"](treeview) @@ -399,10 +633,39 @@ if "mouse-event" in self.callbacks: self.callbacks["mouse-event"](treeview, data) + def __cell_edited(self, cell, row, data, column): + self.update_selection() + if "cell-edited" in self.callbacks: + self.callbacks["cell-edited"](cell, row, data, column) + +# def __column_header_clicked(self, column, column_idx): +# self.data.set_sort_column_id(column_idx, ) + + def status_pixbuf(self, column, cell, model, iter, colnum): + + path = model.get_path(iter) + + real_path = model.convert_path_to_child_path(path) + + status = self.data[real_path][colnum] + + if status not in STATUS_EMBLEMS.keys(): + status = "error" + + icon = "emblem-" + STATUS_EMBLEMS[status] + + cell.set_property("icon_name", icon) + + def file_pixbuf(self, column, cell, model, iter, data=None): stock_id = None - if data is not None: - real_item = self.data[model.get_path(iter)][data["column"]] + + path = model.get_path(iter) + + real_path = model.convert_path_to_child_path(path) + + if data: + real_item = self.data[real_path][data["column"]] kind = data["callback"](real_item) stock_id = gtk.STOCK_FILE if kind == "dir": @@ -410,8 +673,6 @@ if stock_id is not None: cell.set_property("stock_id", stock_id) - - return class Table(TableBase): """ @@ -422,9 +683,9 @@ """ def __init__(self, treeview, coltypes, colnames, values=[], filters=None, - filter_types=None, callbacks={}): + filter_types=None, callbacks={}, flags={}): TableBase.__init__(self, treeview, coltypes, colnames, values, filters, - filter_types, callbacks) + filter_types, callbacks, flags) def get_store(self, coltypes): return gtk.ListStore(*coltypes) @@ -455,9 +716,9 @@ """ def __init__(self, treeview, coltypes, colnames, values=[], filters=None, - filter_types=None, callbacks={}): + filter_types=None, callbacks={}, flags={}): TableBase.__init__(self, treeview, coltypes, colnames, values, filters, - filter_types, callbacks) + filter_types, callbacks, flags={}) def get_store(self, coltypes): return gtk.TreeStore(*coltypes) @@ -542,6 +803,9 @@ def set_text(self, text): self.buffer.set_text(text) + def append_text(self, text): + self.buffer.set_text(self.get_text() + text) + class SourceView(TextView): def __init__(self, widget=None, value=""): if HAS_GTKSOURCEVIEW: @@ -599,20 +863,16 @@ Provides a standard way to generate a revision object from the UI. """ - OPTIONS = [ - _("HEAD"), - _("Number"), - _("Working Copy") - ] def __init__(self, container, client, revision=None, - url_combobox=None, url_entry=None, url=None, expand=False): + url_combobox=None, url_entry=None, url=None, expand=False, + revision_changed_callback=None): """ @type container: A gtk container object (i.e. HBox, VBox, Box) @param container: The container that to add this widget @type client: VCS client object - @param client: A vcs client instance (i.e. rabbitvcs.lib.vcs.create_vcs_instance()) + @param client: A vcs client instance (i.e. rabbitvcs.vcs.VCS()) @type revision: int @param revision: A revision number to start with @@ -630,20 +890,40 @@ be excluded. """ + self.client = client self.revision = revision self.url_combobox = url_combobox self.url_entry = url_entry self.url = url - + self.revision_changed_callback = revision_changed_callback + self.revision_change_inprogress = False hbox = gtk.HBox(0, 4) + if self.url_combobox: + self.url_combobox.cb.connect("changed", self.__on_url_combobox_changed) + + if client.vcs == rabbitvcs.vcs.VCS_GIT: + self.OPTIONS = [ + _("HEAD"), + _("Revision"), + _("Branch") + ] + elif client.vcs == rabbitvcs.vcs.VCS_SVN: + self.OPTIONS = [ + _("HEAD"), + _("Number") + ] + if not client.is_path_repository_url(self.get_url()): + self.OPTIONS.append(_("Working Copy")) + self.revision_kind_opt = ComboBox(gtk.ComboBox(), self.OPTIONS) self.revision_kind_opt.set_active(0) self.revision_kind_opt.cb.connect("changed", self.__revision_kind_changed) hbox.pack_start(self.revision_kind_opt.cb, False, False, 0) self.revision_entry = gtk.Entry() + self.revision_entry.connect("changed", self.__revision_entry_changed) hbox.pack_start(self.revision_entry, expand, expand, 0) self.revision_browse = gtk.Button() @@ -667,11 +947,11 @@ container.add(hbox) def __revision_browse_clicked(self, widget): - from rabbitvcs.ui.log import LogDialog - LogDialog( - self.get_url(), - ok_callback=self.__log_closed - ) + from rabbitvcs.ui.log import SVNLogDialog, GitLogDialog + if self.client.vcs == rabbitvcs.vcs.VCS_GIT: + GitLogDialog(self.get_url(), ok_callback=self.__log_closed) + elif self.client.vcs == rabbitvcs.vcs.VCS_SVN: + SVNLogDialog(self.get_url(), ok_callback=self.__log_closed) def __log_closed(self, data): if data is not None: @@ -679,23 +959,45 @@ self.revision_entry.set_text(data) def __revision_kind_changed(self, widget): - self.determine_widget_sensitivity() - + self.determine_widget_sensitivity() + + if self.revision_changed_callback: + self.revision_change_inprogress = True + gobject.timeout_add(400, self.__revision_changed_callback, self) + + def __revision_entry_changed(self, widget): + if self.revision_changed_callback and not self.revision_change_inprogress: + self.revision_change_inprogress = True + gobject.timeout_add(400, self.__revision_changed_callback, self) + + def __revision_changed_callback(self, *args, **kwargs): + self.revision_change_inprogress = False + self.revision_changed_callback(*args, **kwargs) + + def __on_url_combobox_changed(self, widget): + self.determine_widget_sensitivity() + def determine_widget_sensitivity(self): index = self.revision_kind_opt.get_active() - + + allow_revision_browse = True + # Only allow number entry if "Number" is selected if index == 1: self.revision_entry.set_sensitive(True) + elif index == 2: + if self.client.vcs == rabbitvcs.vcs.VCS_GIT: + self.revision_entry.set_sensitive(True) + allow_revision_browse = False else: self.revision_entry.set_text("") self.revision_entry.set_sensitive(False) # Only allow browsing if a URL is provided - if self.get_url() == "": - self.revision_browse.set_sensitive(False) - else: + if self.get_url() and allow_revision_browse: self.revision_browse.set_sensitive(True) + else: + self.revision_browse.set_sensitive(False) def get_url(self): if self.url_combobox: @@ -712,7 +1014,7 @@ def get_revision_object(self): """ - @rtype rabbitvcs.lib.vcs.###.Revision + @rtype rabbitvcs.vcs.###.Revision @return A rabbitvcs revision object """ @@ -721,9 +1023,15 @@ if index == 0: return self.client.revision("head") elif index == 1: - return self.client.revision("number", self.revision_entry.get_text()) + if self.client.vcs == rabbitvcs.vcs.VCS_SVN: + return self.client.revision("number", self.revision_entry.get_text()) + elif self.client.vcs == rabbitvcs.vcs.VCS_GIT: + return self.client.revision(self.revision_entry.get_text()) elif index == 2: - return self.client.revision("working") + if self.client.vcs == rabbitvcs.vcs.VCS_SVN: + return self.client.revision("working") + elif self.client.vcs == rabbitvcs.vcs.VCS_GIT: + return self.client.revision(self.revision_entry.get_text()) def set_kind_head(self): self.revision_kind_opt.set_active(0) @@ -738,3 +1046,280 @@ def set_kind_working(self): self.revision_kind_opt.set_active(2) self.determine_widget_sensitivity() + +class KeyValueTable(gtk.Table): + """ + Simple extension of a GTK table to display a two-column table of information + with labels. + """ + + default_col_spacing = 12 + default_row_spacing = 6 + + def __init__(self, stuff): + """ + @param stuff: a list of two-element tuples - the first element of the + tuple is the key/label, and the second element is the + information + """ + if not stuff or len(stuff) == 0: + super(KeyValueTable, self).__init__() + else: + super(KeyValueTable, self).__init__(len(stuff), 2) + + row = 0 + + for key, value in stuff: + label_key = gtk.Label("%s:" % key) + label_key.set_properties(xalign=0, use_markup=True) + + label_value = gtk.Label("%s" % value) + if HAS_PANGO: + label_value.set_properties(xalign=0, \ + ellipsize=PANGO_ELLIPSIZE_MIDDLE) + else: + label_value.set_properties(xalign=0) + + self.attach(label_key, + 0,1, + row, row+1, + xoptions=GTK_FILL) + + self.attach(label_value, + 1,2, + row, row+1, + xoptions=GTK_FILL|GTK_EXPAND) + + label_key.show() + label_value.show() + + row += 1 + + self.set_col_spacings(self.default_col_spacing) + self.set_row_spacings(self.default_row_spacing) + +class GitRepositorySelector: + def __init__(self, container, git, changed_callback=None): + self.git = git + self.changed_callback = changed_callback + + vbox = gtk.VBox(False, 4) + + # Set up the Repository Line + label = gtk.Label(_("Repository:")) + label.set_size_request(90, -1) + label.set_justify(gtk.JUSTIFY_LEFT) + + tmp_repos = [] + for item in self.git.remote_list(): + tmp_repos.append(item["name"]) + self.repository_opt = ComboBox(gtk.ComboBoxEntry(), tmp_repos) + self.repository_opt.set_active(0) + self.repository_opt.cb.connect("changed", self.__repository_changed) + self.repository_opt.cb.set_size_request(175, -1) + + hbox = gtk.HBox(False, 0) + hbox.pack_start(label, False, False, 0) + hbox.pack_start(self.repository_opt.cb, False, False, 0) + vbox.pack_start(hbox, False, False, 0) + + + # Set up the Branch line + label = gtk.Label(_("Branch:")) + label.set_size_request(90, -1) + label.set_justify(gtk.JUSTIFY_LEFT) + + tmp_branches = [] + active_branch_index = 0 + index = 0 + for item in self.git.branch_list(): + tmp_branches.append(item.name) + + if item.tracking: + active_branch_index = index + + index += 1 + + self.branch_opt = ComboBox(gtk.ComboBoxEntry(), tmp_branches) + self.branch_opt.set_active(active_branch_index) + self.branch_opt.cb.connect("changed", self.__branch_changed) + self.branch_opt.cb.set_size_request(175, -1) + + hbox = gtk.HBox(False, 0) + hbox.pack_start(label, False, False, 0) + hbox.pack_start(self.branch_opt.cb, False, False, 0) + vbox.pack_start(hbox, False, False, 0) + + # Set up the Host line + label = gtk.Label(_("Host:")) + label.set_justify(gtk.JUSTIFY_LEFT) + label.set_size_request(90, -1) + self.host = gtk.Label() + self.host.set_justify(gtk.JUSTIFY_LEFT) + hbox = gtk.HBox(False, 0) + hbox.pack_start(label, False, False, 0) + hbox.pack_start(self.host, False, False, 0) + vbox.pack_start(hbox, False, False, 4) + + vbox.show_all() + container.add(vbox) + + self.__update_host() + + def __update_host(self): + repo = "origin" + self.host.set_text(self.git.config.get('remote "%s"' % repo, "url")) + + def __repository_changed(self, repository_opt): + pass + + def __branch_changed(self, branch_opt): + pass + +class GitBranchSelector: + def __init__(self, container, git, changed_callback=None): + self.git = git + self.changed_callback = changed_callback + + self.vbox = gtk.VBox(False, 4) + + tmp_branches = [] + active = 0 + index = 0 + for item in self.git.branch_list(): + tmp_branches.append(item.name) + if self.git.is_tracking(item.name): + active = index + index += 1 + + self.branch_opt = ComboBox(gtk.ComboBox(), tmp_branches) + self.branch_opt.set_active(active) + self.branch_opt.cb.connect("changed", self.__branch_changed) + self.branch_opt.cb.set_size_request(175, -1) + + hbox = gtk.HBox(False, 0) + hbox.pack_start(self.branch_opt.cb, False, False, 0) + self.vbox.pack_start(hbox, False, False, 0) + + self.vbox.show_all() + container.add(self.vbox) + + def append(self, widget): + self.vbox.pack_start(widget, False, False, 0) + + def get_branch(self): + return self.branch_opt.get_active_text() + + def __branch_changed(self, branch_opt): + pass + +class MultiFileTextEditor: + """ + Edit a set of text/config/ignore files + """ + + def __init__(self, container, label, combobox_labels, combobox_paths, show_add_line=True, line_content=""): + self.container = container + self.label = label + self.combobox_labels = combobox_labels + self.combobox_paths = combobox_paths + + self.cache = {} + + self.last_path = None + + self.combobox = ComboBox(gtk.ComboBox(), self.combobox_labels) + self.combobox.cb.connect("changed", self.__combobox_changed) + self.combobox.cb.set_size_request(175, -1) + + self.textview = TextView(gtk.TextView()) + + scrolled_window = gtk.ScrolledWindow() + scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) + scrolled_window.add(self.textview.view) + scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + scrolled_window.set_size_request(320, 150) + + vbox = gtk.VBox(False, 6) + + hbox = gtk.HBox(False, 3) + combo_label = gtk.Label(label) + combo_label.set_alignment(0, 0.5) + combo_label.set_size_request(130, -1) + hbox.pack_start(combo_label, False, False, 0) + hbox.pack_start(self.combobox.cb, True, True, 0) + vbox.pack_start(hbox, False, False, 0) + + if show_add_line: + hbox = gtk.HBox(False, 3) + add_label = gtk.Label(_("Add line:")) + add_label.set_alignment(0, 0.5) + add_label.set_size_request(130, -1) + self.add_entry = gtk.Entry() + self.add_entry.set_text(line_content) + add_button = gtk.Button(_("Add")) + add_button.connect("clicked", self.__add_button_clicked) + hbox.pack_start(add_label, False, False, 0) + hbox.pack_start(self.add_entry, True, True, 0) + hbox.pack_start(add_button, False, False, 0) + vbox.pack_start(hbox, False, False, 0) + + vbox.pack_start(scrolled_window, True, True, 0) + vbox.show_all() + + self.combobox.set_active(0) + + container.add(vbox) + + def __combobox_changed(self, widget): + index = self.combobox.get_active() + path = self.combobox_paths[index] + + if not self.last_path: + self.last_path = path + + self.cache[self.last_path] = self.textview.get_text() + self.last_path = path + + self.load_file(path) + + def __add_button_clicked(self, widget): + text = self.add_entry.get_text() + self.add_line(text) + self.add_entry.set_text("") + + def add_line(self, text): + current_text = self.textview.get_text() + if current_text: + current_text += "\n" + text + else: + current_text = text + + self.textview.set_text(current_text) + + def load_file(self, path): + if os.path.exists(path): + fh = open(path, "r") + self.textview.set_text(fh.read()) + fh.close() + else: + self.textview.set_text("") + + def save(self, path=None): + if path: + paths = [path] + else: + paths = self.combobox_paths + + index = self.combobox.get_active() + current_path = self.combobox_paths[index] + self.cache[current_path] = self.textview.get_text() + + for tmppath in paths: + if tmppath in self.cache: + if not os.path.exists(os.path.dirname(tmppath)): + os.mkdir(os.path.dirname(tmppath)) + + fh = open(tmppath, "w") + fh.write(self.cache[tmppath]) + fh.close() diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/about.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/about.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/about.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/about.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,247 @@ + + + + + 775 + 575 + True + About + GTK_WIN_POS_CENTER + rabbitvcs-small + GDK_GRAVITY_CENTER + + + + vertical + True + 12 + 18 + + + True + 12 + + + True + <span size="xx-large"><b>RabbitVCS</b></span> + True + + + + + False + False + + + + + True + 12 + + + vertical + True + 6 + + + True + + + 100 + True + 0 + 0 + Authors: + + + False + False + + + + + 600 + True + 0 + True + True + + + False + False + 1 + + + + + False + False + + + + + True + + + 100 + True + 0 + 0 + Thanks: + + + False + False + + + + + 175 + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_ETCHED_IN + + + True + True + False + GTK_WRAP_WORD + 5 + 5 + + + + + 1 + + + + + 1 + + + + + + + False + False + 1 + + + + + vertical + True + 6 + + + True + 0 + <b>Version Information</b> + True + + + False + False + + + + + True + 12 + + + True + 0 + True + + + + + False + False + 1 + + + + + False + False + 2 + + + + + vertical + True + + + True + 0 + <b>Links</b> + True + + + False + False + + + + + True + 12 + + + True + 0 + http://code.googlecode.com/p/rabbitvcs +http://subversion.tigris.org +http://pysvn.tigris.org/ +http://voidspace.org.uk/python/configobj.html + True + + + + + False + False + 1 + + + + + False + False + 3 + + + + + True + 6 + GTK_BUTTONBOX_END + + + True + True + True + gtk-close + True + + + + + + False + False + GTK_PACK_END + 4 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/add.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/add.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/add.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/add.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,124 @@ + + + + + + 450 + True + Add + center + 400 + 300 + rabbitvcs-small + center + + + + True + 12 + vertical + 6 + + + 200 + True + True + automatic + automatic + etched-in + + + True + True + + + + + 0 + + + + + Select / Deselect all + True + True + False + True + True + + + + False + False + 1 + + + + + True + + + True + 0 + + + False + False + 1 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + False + False + end + 2 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/annotate.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/annotate.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/annotate.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/annotate.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,272 @@ + + + + + + 750 + 550 + True + Annotate + center + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + True + automatic + automatic + + + True + True + True + + + + + 0 + + + + + True + + + True + vertical + 6 + + + True + 12 + + + True + vertical + 6 + + + True + 0 + <b>From Revision</b> + True + + + 0 + + + + + True + 6 + + + 100 + True + True + + + 0 + + + + + True + True + True + + + + True + rabbitvcs-show_log + + + + + False + False + 1 + + + + + 1 + + + + + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>To Revision</b> + True + + + 0 + + + + + True + 6 + + + 100 + True + True + + + 0 + + + + + True + True + True + + + + True + rabbitvcs-show_log + + + + + False + False + 1 + + + + + True + True + True + + + + True + rabbitvcs-update + + + + + False + False + 6 + 2 + + + + + 1 + + + + + 1 + + + + + False + False + 0 + + + + + 0 + + + + + True + vertical + + + True + + + 1 + + + + + True + 6 + end + + + gtk-save-as + True + False + True + True + True + + + + False + False + 0 + + + + + gtk-close + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + end + 1 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/branch-merge.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/branch-merge.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/branch-merge.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/branch-merge.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,204 @@ + + + + + + True + Merge + rabbitvcs + + + + True + 12 + vertical + 18 + + + True + 6 + + + True + vertical + 6 + + + True + 0 + <b>From</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + + + + + + False + False + 0 + + + + + True + vertical + 6 + + + + + + False + False + 1 + + + + + + + 1 + + + + + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>To</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + + + + + + False + False + 0 + + + + + True + vertical + 6 + + + + + + False + False + 1 + + + + + + + 1 + + + + + 1 + + + + + 0 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/branch.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/branch.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/branch.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/branch.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,309 @@ + + + + + + 550 + True + Branch/tag + center + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Repository</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + 6 + + + 90 + True + 0 + From: + + + False + False + 0 + + + + + True + + + 1 + + + + + True + True + True + + + + True + gtk-find + 1 + + + + + False + False + 2 + + + + + 0 + + + + + True + 6 + + + 90 + True + 0 + To: + + + False + False + 0 + + + + + True + + + 1 + + + + + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>Create copy from</b> + True + + + False + False + 0 + + + + + True + 12 + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + vertical + 6 + + + True + 0 + <b>Add Message</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + start + + + Previous Messages + True + True + True + + + + False + False + 0 + + + + + False + False + 0 + + + + + True + True + automatic + automatic + etched-in + + + 100 + True + True + word + + + + + -1 + + + + + + + 1 + + + + + 2 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + 3 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/browser.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/browser.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/browser.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/browser.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,221 @@ + + + + + + 640 + 480 + True + Repository Browser + center + rabbitvcs + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + vertical + 6 + + + True + 6 + + + 90 + True + 0 + URL: + + + False + False + 0 + + + + + True + + + 1 + + + + + False + False + 0 + + + + + True + 6 + + + 90 + True + 0 + Revision: + + + False + False + 0 + + + + + True + + + + + + 1 + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + True + automatic + automatic + etched-in + + + True + True + + + + + 1 + + + + + 0 + + + + + True + + + True + + + True + 0 + + + False + False + 0 + + + + + 0 + + + + + True + 6 + end + + + True + True + True + + + + True + + + True + gtk-refresh + + + 0 + + + + + True + Load/Refresh + + + 1 + + + + + + + False + False + 0 + + + + + gtk-close + True + True + True + True + + + + False + False + 1 + + + + + False + False + 1 + + + + + False + False + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/changes.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/changes.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/changes.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/changes.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,494 @@ + + + + + + 640 + 500 + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Changes + center + rabbitvcs-small + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + vertical + 18 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + <b>First:</b> + True + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 100 + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + URL + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 4 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + 0 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-zoom-fit + 1 + + + + + False + False + 1 + + + + + 1 + + + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 100 + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + Revision + + + False + False + 0 + + + + + True + + + + + + 1 + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + <b>Second:</b> + True + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 100 + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + URL + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 4 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + 0 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-zoom-fit + 1 + + + + + False + False + 1 + + + + + 1 + + + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 100 + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + Revision + + + False + False + 0 + + + + + True + + + + + + 1 + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + vertical + 6 + + + True + + + True + 0 + <b>Differences</b> (double-click to compare with base) + True + + + False + False + 0 + + + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 4 + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + automatic + automatic + etched-in + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + + + + + + + 0 + + + + + 1 + + + + + 2 + + + + + 0 + + + + + True + + + True + False + + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 + end + + + True + True + True + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-refresh + + + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Load/Refresh + + + 1 + + + + + + + False + False + 0 + + + + + gtk-close + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + False + False + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/checkmods.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/checkmods.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/checkmods.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/checkmods.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,131 @@ + + + + + + 550 + 300 + True + Check for Modifications + center + 400 + 300 + rabbitvcs-small + center + + + + True + 12 + 18 + + + True + True + + + + True + True + automatic + automatic + etched-in + + + True + True + + + + + + + True + Local + + + False + + + + + True + True + automatic + automatic + + + True + True + + + + + + + True + Remote + + + 1 + False + + + + + + + + + + + 0 + + + + + True + 6 + end + + + gtk-refresh + True + True + True + True + + + + False + False + 0 + + + + + gtk-close + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/checkout.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/checkout.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/checkout.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/checkout.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,318 @@ + + + + + + 550 + True + Checkout + center + 450 + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Repository</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + 6 + + + 90 + True + 0 + URL: + + + False + False + 0 + + + + + True + + + + 1 + + + + + True + True + True + True + Browse... + + + + True + gtk-find + 1 + + + + + False + False + 2 + + + + + False + False + 0 + + + + + True + 6 + + + 90 + True + 0 + Destination: + + + False + False + 0 + + + + + True + True + + + + + 1 + + + + + True + True + True + Browse... + + + + True + gtk-harddisk + 2 + + + + + False + False + 2 + + + + + 1 + + + + + + + False + False + 1 + + + + + 0 + + + + + vertical + 6 + + + True + 0 + <b>Options</b> + True + + + 0 + + + + + True + 12 + + + True + vertical + 6 + + + Recursive + True + True + False + True + True + + + 0 + + + + + Omit Externals + True + True + False + True + + + 1 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + vertical + 6 + + + True + 0 + <b>Revision</b> + True + + + False + False + 0 + + + + + True + 12 + + + + + + False + False + 1 + + + + + False + False + 2 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + False + True + True + True + + + + False + False + 1 + + + + + False + False + 3 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/cleanup.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/cleanup.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/cleanup.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/cleanup.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,89 @@ + + + + + 400 + True + Cleaning Up... + center + rabbitvcs-small + + + + vertical + True + 12 + + + True + 0.10000000149011612 + 5 + gtk-directory + 6 + + + False + False + + + + + True + 0.10000000149011612 + 5 + Cleanup Requested.... + +Begin working copy cleanup? + + + False + False + 1 + + + + + True + 6 + GTK_BUTTONBOX_END + + + True + True + True + gtk-cancel + True + + + + False + False + + + + + True + False + True + True + gtk-ok + True + + + + False + False + 1 + + + + + False + False + 2 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/clean.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/clean.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/clean.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/clean.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,178 @@ + + + + + + 400 + True + Clean + center-always + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Clean your Repository</b> + True + + + 0 + + + + + True + 0.10000000149011612 + Remove untracked files from the working tree + + + 1 + + + + + True + 12 + + + True + vertical + 3 + + + Remove directories + True + True + False + True + True + + + 0 + + + + + Remove ignored files, too + True + True + False + True + + + + 1 + + + + + Remove only ignored files + True + True + False + True + + + + 2 + + + + + Dry run + True + True + False + True + + + 3 + + + + + Force + True + True + False + True + True + + + 4 + + + + + + + False + False + 2 + + + + + False + False + 0 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/commit.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/commit.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/commit.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/commit.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,311 @@ + + + + + + True + Commit + center + 640 + 640 + rabbitvcs-small + + + + + True + 12 + 18 + vertical + + + 12 + + + 100 + True + 0 + 0 + <b>Commit to:</b> + True + char + + + False + False + 0 + + + + + 500 + True + 0 + True + char + + + 1 + + + + + False + False + 0 + + + + + True + 6 + vertical + + + True + 0 + <b>Add Message</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + vertical + + + 0 + True + start + + + Previous Messages + True + True + True + + + + False + False + 0 + + + + + False + False + 0 + + + + + True + True + automatic + automatic + etched-in + + + True + True + True + 7 + word + False + + + + + -1 + + + + + + + 1 + + + + + 1 + + + + + True + 6 + vertical + + + True + 0 + <b>Changed Files</b> (double-click to compare with base) + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + vertical + + + True + True + automatic + automatic + etched-in + + + True + True + + + + + 0 + + + + + True + vertical + + + Select / Deselect all + True + True + False + True + + + + False + False + 0 + + + + + Show unversioned files + True + True + False + True + True + + + + False + False + 1 + + + + + False + False + 1 + + + + + + + 1 + + + + + 2 + + + + + True + + + True + 0 + + + False + False + 0 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + False + False + 3 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/authentication.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/authentication.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/authentication.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/authentication.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,241 @@ + + + + + + + + + 450 + 5 + Authentication + center + rabbitvcs-small + dialog + False + + + True + 12 + + + True + 6 + 6 + + + True + 0 + <b>Please add your authentication details</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + + + True + + + 100 + True + 0 + 0 + Realm: + + + False + False + 0 + + + + + 300 + True + 0 + 0 + True + char + True + + + 1 + + + + + 0 + + + + + True + + + 100 + True + 0 + Login: + + + False + False + 0 + + + + + True + True + True + + + 1 + + + + + 1 + + + + + True + + + 100 + True + 0 + Password: + + + False + False + 0 + + + + + True + True + False + True + + + 1 + + + + + 2 + + + + + True + + + 100 + True + + + False + False + 0 + + + + + Save Authentication + True + True + False + True + + + 1 + + + + + 3 + + + + + + + 1 + + + + + False + False + 1 + + + + + True + end + + + gtk-cancel + True + True + False + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + auth_cancel + auth_ok + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/cert_authentication.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/cert_authentication.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/cert_authentication.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/cert_authentication.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,209 @@ + + + + + + + + 400 + 5 + center + rabbitvcs-small + dialog + False + + + True + 12 + + + True + 6 + 6 + + + True + 0 + <b>Please add your authentication details</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + + + True + + + 100 + True + 0 + 0 + Realm: + + + False + False + 0 + + + + + True + 0 + 0 + True + True + + + False + False + 1 + + + + + 0 + + + + + True + + + 100 + True + 0 + Password: + + + False + False + 0 + + + + + True + True + False + True + + + 1 + + + + + 1 + + + + + True + + + 100 + True + + + False + False + 0 + + + + + Save Authentication + True + True + False + True + + + 1 + + + + + 2 + + + + + + + False + False + 1 + + + + + 1 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + certauth_cancel + certauth_ok + + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/certificate.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/certificate.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/certificate.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/certificate.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,304 @@ + + + + + + + + 550 + 5 + Check Certificate + center + rabbitvcs-small + dialog + False + + + 400 + True + 12 + + + True + 6 + 6 + + + True + 0 + <b>Certificate Details</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + + + True + + + 100 + True + 0 + 0 + Realm: + start + + + False + False + 0 + + + + + True + 0 + 0 + True + + + 1 + + + + + False + False + 0 + + + + + True + + + 100 + True + 0 + 0 + Host: + start + + + False + False + 0 + + + + + True + 0 + 0 + True + + + 1 + + + + + False + False + 1 + + + + + True + + + 100 + True + 0 + 0 + Issuer: + start + + + False + False + 0 + + + + + True + 0 + 0 + True + + + 1 + + + + + False + False + 2 + + + + + True + + + 100 + True + 0 + 0 + Valid: + start + + + False + False + 0 + + + + + True + 0 + 0 + True + + + 1 + + + + + False + False + 3 + + + + + True + + + 100 + True + 0 + 0 + Fingerprint: + start + + + False + False + 0 + + + + + True + 0 + 0 + True + + + 1 + + + + + False + False + 4 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + spread + + + Accept Once + True + True + True + + + False + False + 0 + + + + + Accept Forever + True + True + True + + + False + False + 1 + + + + + Deny + True + True + True + + + False + False + 2 + + + + + False + False + end + 0 + + + + + + cert_accept_once + cert_accept_forever + + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/confirmation.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/confirmation.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/confirmation.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/confirmation.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,107 @@ + + + + + + + + + 5 + Confirmation + center + rabbitvcs-small + dialog + False + + + True + 12 + + + True + + + 75 + True + gtk-dialog-warning + 6 + + + False + False + 0 + + + + + True + 0 + 6 + 6 + Are you sure you want to continue? + + + False + False + 1 + + + + + False + False + 1 + + + + + True + end + + + gtk-no + True + True + True + True + + + False + False + 0 + + + + + gtk-yes + True + True + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + confirm_cancel + confirm_ok + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/conflict_decision.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/conflict_decision.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/conflict_decision.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/conflict_decision.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,177 @@ + + + + + + + 5 + Edit Conflicts + normal + False + + + True + 12 + + + True + 6 + + + True + + + True + 25 + 25 + gtk-dialog-warning + 6 + + + False + False + 0 + + + + + False + False + 0 + + + + + True + 12 + 18 + + + True + 0 + 0.10000000149011612 + <b>A conflict was found in the following file:</b> + True + + + False + False + 0 + + + + + True + 0 + 0 + + + False + False + 1 + + + + + False + False + 1 + + + + + 1 + + + + + True + 12 + + + After the editing conflict, mark the file as resolved. + True + True + False + True + + + + + False + False + 2 + + + + + True + center + + + Cancel + True + True + True + + + False + False + 0 + + + + + Accept Mine + True + True + True + + + False + False + 1 + + + + + Accept Theirs + True + True + True + + + False + False + 2 + + + + + Merge Manually + True + True + True + + + False + False + 3 + + + + + False + end + 0 + + + + + + cancel + accept_theirs + merge_manually + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/create_folder.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/create_folder.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/create_folder.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/create_folder.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,165 @@ + + + + + + + + 320 + 240 + 5 + Create Folder... + normal + False + + + True + 12 + + + True + 6 + + + True + 6 + + + True + 0 + <b>Folder Name</b> + True + + + 0 + + + + + True + 12 + + + True + True + + + + + + + 1 + + + + + False + False + 0 + + + + + True + 6 + + + True + 0 + <b>Add Message</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + True + automatic + automatic + etched-in + + + True + True + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + cancel + ok + + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/delete_confirmation.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/delete_confirmation.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/delete_confirmation.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/delete_confirmation.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,126 @@ + + + + + + + + 5 + Delete Confirmation + center + rabbitvcs-small + dialog + False + + + True + 12 + + + True + + + 75 + True + gtk-dialog-warning + 6 + + + False + False + 0 + + + + + True + 12 + 18 + + + True + 0 + <span size="large"><b>Are you sure you want to delete %item%?</b></span> + True + + + False + False + 0 + + + + + True + 0 + The item(s) will be sent to the trash can. + + + False + False + 1 + + + + + 1 + + + + + 1 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-delete + True + True + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + cancel + delete + + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/error_notification.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/error_notification.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/error_notification.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/error_notification.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,114 @@ + + + + + + + + 500 + 300 + 5 + RabbitVCS Error + rabbitvcs-small + normal + False + + + True + 6 + + + True + 6 + + + True + gtk-dialog-warning + 6 + + + False + 0 + + + + + True + <span weight="bold" size="xx-large">RabbitVCS Error</span> + True + + + 1 + + + + + False + 1 + + + + + True + + + + + + False + 2 + + + + + True + True + automatic + automatic + etched-in + + + True + True + False + False + + + + + 3 + + + + + True + end + + + gtk-close + True + True + True + True + + + False + False + 0 + + + + + False + end + 0 + + + + + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/loading.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/loading.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/loading.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/loading.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,69 @@ + + + + + + + + + 300 + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + Loading... + center-on-parent + rabbitvcs-small + dialog + False + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + False + False + 1 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + end + + + gtk-cancel + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + + False + False + 0 + + + + + False + end + 0 + + + + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/message_box.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/message_box.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/message_box.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/message_box.xml 2011-10-17 19:05:06.000000000 +0000 @@ -0,0 +1,66 @@ + + + + + + + + True + 5 + Message + center + rabbitvcs-small + dialog + False + + + True + 12 + + + True + 0 + 6 + 6 + True + + + 1 + + + + + True + end + + + gtk-ok + True + True + True + True + + + False + False + 0 + + + + + False + end + 0 + + + + + + messagebox_ok + + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/name_email_prompt.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/name_email_prompt.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/name_email_prompt.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/name_email_prompt.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,164 @@ + + + + + + + + + + 400 + 12 + Name and Email + center-on-parent + normal + False + + + + True + 12 + + + True + 0 + <b>Enter Name and Email Details</b> + True + + + False + False + 1 + + + + + True + 12 + + + True + 6 + + + True + + + 90 + True + 0 + Name: + + + False + False + 0 + + + + + True + True + + True + + + 1 + + + + + False + False + 0 + + + + + True + + + 90 + True + 0 + Email: + + + False + False + 0 + + + + + True + True + + True + + + 1 + + + + + False + False + 1 + + + + + + + 2 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + cancel + ok + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/one_line_text_change.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/one_line_text_change.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/one_line_text_change.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/one_line_text_change.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,107 @@ + + + + + + + + + 500 + 5 + Text Change + rabbitvcs-small + normal + False + + + + True + 12 + + + True + + + 100 + True + 0 + New Name: + + + False + False + 0 + + + + + True + True + + + + 1 + + + + + False + False + 1 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + True + True + True + True + + + False + False + 1 + + + + + False + False + end + 0 + + + + + + cancel + ok + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/previous_messages.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/previous_messages.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/previous_messages.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/previous_messages.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,167 @@ + + + + + + + + + 500 + 5 + Previous Messages + center + 450 + rabbitvcs-small + dialog + False + + + True + 12 + + + True + 6 + 6 + + + True + 0 + <b>Previous Messages</b> + True + + + False + False + 0 + + + + + True + 12 + + + 200 + True + True + automatic + automatic + etched-in + + + True + True + + + + + + + 1 + + + + + 1 + + + + + True + 6 + 6 + + + True + 0 + <b>Message</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + True + automatic + automatic + etched-in + + + 100 + True + True + word + + + + + + + 1 + + + + + 2 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + prevmes_cancel + prevmes_ok + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/property.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/property.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/property.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/property.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,219 @@ + + + + + + + + + 400 + 5 + Property + center + rabbitvcs-small + dialog + False + + + True + 12 + + + True + 6 + 6 + + + True + 0 + <b>Edit Property Details</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + + + True + + + 100 + True + 0 + Property: + + + False + False + 0 + + + + + True + True + + + 1 + + + + + False + False + 0 + + + + + True + + + 100 + True + 0 + 0.05000000074505806 + Value: + + + False + False + 0 + + + + + True + True + automatic + automatic + etched-in + + + 100 + True + True + word + + + + + 1 + + + + + 1 + + + + + True + + + 100 + True + + + False + False + 0 + + + + + Apply property recursively + True + True + False + True + True + + + False + False + 1 + + + + + False + False + 2 + + + + + + + 1 + + + + + 1 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + property_cancel + property_ok + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/ssl_client_cert_prompt.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/ssl_client_cert_prompt.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/ssl_client_cert_prompt.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/ssl_client_cert_prompt.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,203 @@ + + + + + + + + + 400 + 5 + SSL Client Certification + center + rabbitvcs-small + dialog + False + + + True + 12 + + + True + 6 + + + True + 0 + <b>Please provide your ssl certification file</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + + + True + + + 100 + True + 0 + Realm: + + + False + False + 0 + + + + + True + 0 + + + 1 + + + + + 0 + + + + + True + 2 + + + 100 + True + 0 + Path: + + + False + False + 0 + + + + + True + True + + + + 1 + + + + + True + True + True + + + + True + gtk-harddisk + + + + + False + False + 2 + + + + + 1 + + + + + Save Authentication + True + True + False + 0.4699999988079071 + True + + + 2 + + + + + + + False + False + 1 + + + + + 1 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + sslclientcert_cancel + sslclientcert_ok + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/text_change.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/text_change.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/dialogs/text_change.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/dialogs/text_change.xml 2011-02-26 20:54:31.000000000 +0000 @@ -0,0 +1,129 @@ + + + + + + + + + + 350 + 200 + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + center-on-parent + rabbitvcs-small + dialog + False + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + <b>Message</b> + True + + + False + False + 0 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + automatic + automatic + etched-in + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + word + + + + + + + 1 + + + + + 1 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + end + + + gtk-cancel + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + textchange_cancel + textchange_ok + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/git-update.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/git-update.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/git-update.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/git-update.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,134 @@ + + + + + + True + Update Local Repository + center-always + + + + True + 12 + 18 + + + True + 6 + + + True + 0 + <b>Options</b> + True + + + False + False + 0 + + + + + True + 12 + + + + + + False + 1 + + + + + False + False + 0 + + + + + True + + + 90 + True + + + False + False + 0 + + + + + Merge changes into local branch + True + True + False + True + True + + + False + False + 1 + + + + + False + False + 2 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/ignore.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/ignore.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/ignore.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/ignore.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,98 @@ + + + + + + True + Ignore + center-always + rabbitvcs + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + 0 + <b>Ignore and exclude files from being tracked</b> + True + + + False + False + 0 + + + + + True + 12 + + + + + + 1 + + + + + 0 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/import.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/import.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/import.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/import.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,196 @@ + + + + + 550 + True + Import + center + rabbitvcs-small + + + + vertical + True + 12 + 18 + + + vertical + True + 6 + + + True + 0 + <b>Repository</b> + True + + + False + False + + + + + True + 12 + + + vertical + True + 6 + + + True + + + True + True + + + + + + + + + False + False + 1 + + + + + + + vertical + True + 6 + + + True + 0 + <b>Import Message</b> + True + + + False + False + + + + + True + 12 + + + vertical + True + 6 + + + True + GTK_BUTTONBOX_START + + + True + True + True + Previous Messages + + + + + + False + False + + + + + 150 + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_ETCHED_IN + + + True + True + GTK_WRAP_WORD + + + + + 1 + + + + + True + True + Include ignored files + True + + + False + False + 2 + + + + + + + False + False + 1 + + + + + 1 + + + + + True + 6 + GTK_BUTTONBOX_END + + + True + True + True + gtk-cancel + True + + + + + + True + True + True + gtk-ok + True + + + + 1 + + + + + False + False + GTK_PACK_END + 2 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/lock.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/lock.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/lock.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/lock.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,279 @@ + + + + + + 600 + True + Lock Files + center + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Please describe why you are locking these files</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + start + + + Previous Messages + True + True + True + + + + False + False + 0 + + + + + False + False + 0 + + + + + 100 + True + True + automatic + automatic + etched-in + + + True + True + word + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>Files to lock</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + 250 + True + True + automatic + automatic + etched-in + + + True + True + + + + + 0 + + + + + True + vertical + + + Select / Deselect all + True + True + False + True + True + + + + False + False + 0 + + + + + Steal the locks + True + True + False + True + + + + False + False + 1 + + + + + 1 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + + + True + 0 + 0 + + + False + False + 1 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + False + False + end + 2 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/log.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/log.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/log.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/log.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,428 @@ + + + + + + 775 + 560 + True + Log + center + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + + + + True + True + vertical + + + True + vertical + 6 + + + True + 12 + + + True + 0 + <b>Revisions Table</b> + True + + + False + False + 0 + + + + + True + 3 + + + True + Showing Revisions: + + + 0 + + + + + True + N/A + + + 1 + + + + + True + to + + + 2 + + + + + True + N/A + + + 3 + + + + + False + False + end + 2 + + + + + Stop on copy + True + True + False + True + + + + False + False + end + 1 + + + + + False + False + 0 + + + + + True + + + True + vertical + 6 + + + 180 + True + True + automatic + automatic + etched-in + + + True + True + True + + + + + 0 + + + + + + + 1 + + + + + False + True + + + + + True + True + 6 + + + True + vertical + 6 + + + True + 0 + <b>Affected File(s)</b> (double-click to compare with base) + True + + + False + False + 0 + + + + + True + + + 80 + True + True + automatic + automatic + etched-in + + + True + True + + + + + + + 1 + + + + + False + True + + + + + True + vertical + 6 + + + True + 0 + <b>Message</b> + True + + + False + False + 0 + + + + + True + + + 80 + True + True + automatic + automatic + etched-in + + + True + True + False + word + + + + + + + 1 + + + + + True + True + + + + + False + True + + + + + 2 + + + + + True + 12 + + + True + 6 + + + True + 6 + start + + + gtk-go-back + True + False + True + True + True + + + + False + False + 0 + + + + + gtk-go-forward + True + False + True + True + True + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + 6 + + + True + Limit: + + + False + False + 0 + + + + + 75 + True + True + 100 + + + False + False + 1 + + + + + True + True + True + Refresh + + + + True + gtk-refresh + + + + + False + False + 2 + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + 6 + end + + + gtk-close + True + True + True + True + + + + False + False + 0 + + + + + False + False + end + 1 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/manager.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/manager.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/manager.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/manager.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,208 @@ + + + + + + 450 + True + center-always + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + + + True + vertical + 6 + + + True + 0 + True + + + False + False + 0 + + + + + True + 0 + 12 + + + True + 6 + + + 200 + 150 + True + True + automatic + automatic + etched-in + + + True + True + + + + + 0 + + + + + True + vertical + 6 + + + True + True + True + + + + True + gtk-add + + + + + False + False + 0 + + + + + True + False + True + True + + + + True + gtk-delete + + + + + False + False + 1 + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + 0 + + + + + 25 + + + True + vertical + + + True + 0 + label + + + False + False + 0 + + + + + True + + + + + + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + 6 + end + + + gtk-close + True + True + True + True + + + + False + False + 0 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/merge.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/merge.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/merge.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/merge.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,1008 @@ + + + + + + 550 + True + 12 + Merge Assistant + center + rabbitvcs-small + center + + + + + + + + + + + + + + + + + True + 12 + vertical + 18 + + + True + vertical + + + Merge a range of revisions + True + True + False + True + True + + + False + False + 0 + + + + + 475 + True + 0 + 30 + Choose this method if you have made some changes to a branch and wish to merge your changes with another branch. + True + + + 1 + + + + + False + False + 0 + + + + + True + vertical + + + Merge two different trees + True + True + False + True + True + mergetype_range_opt + + + False + False + 0 + + + + + 475 + True + 0 + 30 + Choose this method if you wish to merge two different branches into your working copy. + True + + + 1 + + + + + False + False + 1 + + + + + True + vertical + + + Reintegrate a branch + True + True + False + True + mergetype_range_opt + + + False + False + 0 + + + + + 475 + True + 0 + 30 + Choose this method if you wish to reintegrate a branch into the trunk. + True + + + 1 + + + + + False + False + 2 + + + + + intro + Step 1: Merge Type + + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>URL to merge from</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>Revision Range</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + 6 + + + True + True + + + + 0 + + + + + True + True + True + Show log + + + + True + 24 + rabbitvcs-show_log + + + + + False + False + 1 + + + + + False + False + 0 + + + + + 500 + True + 0 + 30 + Use the log dialog to select the revisions that you wish to merge. Or write out the revisions manually, each separated by a comma. You can specify a revision range by a dash. + +Example: 4-7,9,11,15-HEAD + +To merge all revisions, leave the box empty. + True + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + vertical + 6 + + + True + 0 + <b>Working Copy</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 12 + + + True + 0 + + + 0 + + + + + + + False + False + 1 + + + + + False + False + 2 + + + + + Step 2: Merge a Range of Revisions + + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>From URL</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + 6 + + + True + + + True + + + + + + 0 + + + + + True + True + True + True + Show log + + + + True + gtk-harddisk + 24 + + + + + False + False + end + 1 + + + + + 0 + + + + + True + + + + + + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + vertical + + + True + 0 + <b>Working Copy</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 12 + + + True + 0 + True + + + 0 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + Step 2: Reintegrate a Branch + + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>From: (URL and revision to merge)</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + + + + False + False + 0 + + + + + True + vertical + + + HEAD + True + True + False + True + True + + + False + False + 0 + + + + + True + 6 + + + Revision + 140 + True + True + False + True + mergetree_from_revision_head_opt + + + 0 + + + + + 75 + True + True + + + + False + False + 1 + + + + + True + True + True + Show log + + + + True + 24 + rabbitvcs-show_log + + + + + False + False + 2 + + + + + False + False + 1 + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>To: (URL and revision to merge)</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + + + + False + False + 0 + + + + + True + vertical + + + HEAD + True + True + False + True + True + + + False + False + 0 + + + + + True + 6 + + + Revision + 140 + True + True + False + True + mergetree_to_revision_head_opt + + + 0 + + + + + 75 + True + True + + + + False + False + 1 + + + + + True + True + True + Show log + + + + True + 24 + rabbitvcs-show_log + + + + + False + False + 2 + + + + + False + False + 1 + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + vertical + 6 + + + True + 0 + <b>Working Copy</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 12 + + + True + 0 + + + 0 + + + + + + + False + False + 1 + + + + + False + False + 2 + + + + + Step 2: Merge two different trees + + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Options</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + + + Recursive + True + True + False + True + True + + + 0 + + + + + Ignore ancestry + True + True + False + True + + + False + False + 1 + + + + + Only record the merge + True + True + False + True + + + 2 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + end + + + True + True + True + + + + True + + + True + gtk-execute + + + 0 + + + + + True + Test Merge + + + 1 + + + + + + + False + False + 0 + + + + + False + False + 1 + + + + + confirm + Step 3: Final Options + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/notification.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/notification.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/notification.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/notification.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,181 @@ + + + + + + 740 + True + Notification Messages + center + rabbitvcs-small + center + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + True + + + False + False + 0 + + + + + True + 0 + + + False + False + 1 + + + + + False + False + 1 + + + + + 225 + True + True + automatic + automatic + etched-in + + + True + True + + + + + 2 + + + + + True + vertical + 6 + + + True + + + False + False + 0 + + + + + False + False + 3 + + + + + True + 6 + + + True + start + + + gtk-save-as + True + False + True + True + True + + + + False + False + 0 + + + + + 0 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + False + True + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + False + False + end + 3 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/properties.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/properties.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/properties.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/properties.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,250 @@ + + + + + 500 + True + Properties + GTK_WIN_POS_CENTER + rabbitvcs-small + + + + vertical + True + 12 + 18 + + + vertical + True + 6 + + + True + 0 + <b>Properties for:</b> + True + + + False + False + + + + + True + 12 + + + vertical + True + 6 + + + True + 6 + + + 90 + True + 0 + URL/Path: + + + False + False + + + + + True + True + + + + 1 + + + + + True + True + True + + + + True + gtk-refresh + + + + + False + False + 2 + + + + + False + False + + + + + 150 + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_ETCHED_IN + + + True + True + True + + + + + + + 1 + + + + + True + <i>Selected properties will be applied recursively.</i> + True + + + False + False + 2 + + + + + True + True + Delete properties recursively + True + + + False + False + 3 + + + + + True + 3 + GTK_BUTTONBOX_START + + + True + True + True + New... + + + + False + False + + + + + True + False + True + True + Edit... + + + + False + False + 1 + + + + + True + False + True + True + Delete + + + + False + False + 2 + + + + + False + False + 4 + + + + + + + 1 + + + + + + + True + 6 + GTK_BUTTONBOX_END + + + True + True + True + gtk-cancel + True + + + + False + False + + + + + True + True + True + gtk-save + True + + + + False + False + 1 + + + + + False + False + GTK_PACK_END + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/property_editor.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/property_editor.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/property_editor.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/property_editor.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,223 @@ + + + + + + 440 + True + Property Editor + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + 2 + 2 + 20 + 6 + + + True + + + True + <b>Working Copy:</b> + True + True + + + False + False + 0 + + + + + GTK_SHRINK | GTK_FILL + GTK_SHRINK | GTK_FILL + + + + + True + + + True + <b>Remote URI:</b> + True + True + + + False + False + 0 + + + + + 1 + 2 + GTK_SHRINK | GTK_FILL + GTK_SHRINK | GTK_FILL + + + + + True + + + True + 0 + middle + + + 0 + + + + + 1 + 2 + 1 + 2 + + + + + True + + + True + 0 + middle + + + 0 + + + + + 1 + 2 + + + + + False + 0 + + + + + True + True + automatic + automatic + etched-in + + + True + True + + + + + 1 + + + + + True + 6 + True + center + + + gtk-refresh + True + True + True + Refresh the list of properties. + True + + + + False + False + 0 + + + + + gtk-new + True + True + True + Add a new property. + True + + + + False + False + 1 + + + + + False + False + 2 + + + + + True + True + + + + + + 3 + + + + + True + 6 + True + end + + + gtk-close + True + True + True + Close this dialog. + True + + + + False + False + 0 + + + + + False + False + 4 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/property_page.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/property_page.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/property_page.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/property_page.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,254 @@ + + + + + + True + + + True + rabbitvcs + + + False + False + 0 + + + + + True + RabbitVCS + + + 1 + + + + + True + True + + + + + + True + 0 + + + + + True + 12 + vertical + 12 + + + 12 + True + + + 0 + + + + + True + + + True + 0 + 8 + gtk-file + 6 + + + False + False + 0 + + + + + True + 4 + 2 + 16 + 8 + + + True + 0 + Name: + + + GTK_FILL + GTK_FILL + + + + + True + 0 + Content status: + + + 2 + 3 + GTK_FILL + GTK_FILL + + + + + True + 0 + Property status: + + + 3 + 4 + GTK_FILL + GTK_FILL + + + + + True + 0 + VCS: + + + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + 0 + True + + + 1 + 2 + + + + + True + 0 + True + + + 1 + 2 + 1 + 2 + + + + + True + + + True + + + False + 0 + + + + + True + 0 + True + + + 1 + + + + + 1 + 2 + 3 + 4 + + + + + True + + + True + + + False + 0 + + + + + True + 0 + True + + + 1 + + + + + 1 + 2 + 2 + 3 + + + + + 1 + + + + + 1 + + + + + 12 + True + + + 2 + + + + + True + True + never + automatic + + + True + queue + + + True + vertical + + + + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/pull.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/pull.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/pull.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/pull.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,134 @@ + + + + + + True + Pull + center-always + + + + True + 12 + 18 + + + True + 6 + + + True + 0 + <b>Pull Information</b> + True + + + False + False + 0 + + + + + True + 12 + + + + + + False + 1 + + + + + False + False + 0 + + + + + True + + + 90 + True + + + False + False + 0 + + + + + Merge changes into local branch + True + True + False + True + True + + + False + False + 1 + + + + + False + False + 2 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/push.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/push.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/push.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/push.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,170 @@ + + + + + + True + Push + center-always + rabbitvcs + + + + True + 12 + vertical + 18 + + + True + 6 + + + True + 0 + <b>Push Information</b> + True + + + False + False + 0 + + + + + True + 12 + + + + + + False + 1 + + + + + False + False + 0 + + + + + True + 6 + + + True + 0 + <b>Commits to Push</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + True + automatic + automatic + etched-in + + + 450 + 200 + True + True + + + + + + + 1 + + + + + 2 + + + + + True + + + True + 0 + + + False + False + 1 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 0 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/relocate.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/relocate.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/relocate.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/relocate.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,165 @@ + + + + + 640 + True + Relocate + center + rabbitvcs-small + + + + vertical + True + 12 + 18 + + + vertical + True + 6 + + + True + 0 + <b>Change the repository of your working copy</b> + True + + + False + False + + + + + True + 12 + + + vertical + True + 6 + + + True + 6 + + + 100 + True + 0 + From: + + + False + False + + + + + True + True + + + 1 + + + + + False + False + + + + + True + 6 + + + 100 + True + 0 + To: + + + False + False + + + + + True + + + True + True + + + + + 1 + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + + + + + True + 6 + GTK_BUTTONBOX_END + + + True + True + True + gtk-cancel + True + + + + + + True + True + True + gtk-ok + True + + + + 1 + + + + + False + False + GTK_PACK_END + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/reset.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/reset.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/reset.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/reset.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,337 @@ + + + + + + True + Reset + center-always + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Reset your Repository</b> + True + + + False + False + 0 + + + + + True + 0 + Reset current HEAD to specified state. + + + False + False + 1 + + + + + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>Path</b> + True + + + 0 + + + + + True + 12 + + + True + 6 + + + True + True + + + + + 0 + + + + + True + True + True + + + + True + gtk-harddisk + + + + + False + False + 1 + + + + + + + 1 + + + + + False + False + 1 + + + + + True + vertical + 6 + + + True + 0 + <b>Revision</b> + True + + + 0 + + + + + True + 12 + + + + + + 1 + + + + + 2 + + + + + True + vertical + 6 + + + True + vertical + 6 + + + True + 0 + <b>Options</b> + True + + + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + True + False + True + + + True + <i>Mixed</i> - Reset the index but not the working tree + True + + + + + 0 + + + + + True + True + False + True + mixed_opt + + + True + <i>Soft</i> - Does not touch the index file or working tree at all, +but requires them to be in good working order + True + + + + + 1 + + + + + True + True + False + True + mixed_opt + + + True + <i>Hard</i> - Matches the working tree and index to that of the +tree being switched to + True + + + + + 2 + + + + + True + True + False + True + mixed_opt + + + True + <i>Merge</i> - Resets the index to match the tree recorded by the named commit, +and updates the files that are different between the named commit +and the current commit in the working tree + True + + + + + 3 + + + + + None + True + True + False + True + True + mixed_opt + + + 4 + + + + + + + 1 + + + + + 0 + + + + + 3 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + 4 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/settings.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/settings.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/settings.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/settings.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,965 @@ + + + + + + 550 + 425 + True + Settings + center + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + True + + + True + vertical + + + True + 12 + vertical + 6 + + + True + 0 + <b>RabbitVCS</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + + + 90 + True + 0 + 5 + Language: + + + False + False + 0 + + + + + True + + + False + False + end + 1 + + + + + False + False + 0 + + + + + True + vertical + + + Enable file attributes + True + True + False + True + True + + + False + False + 0 + + + + + Enable emblems + True + True + False + True + True + + + False + False + 1 + + + + + Enable recursive status checks + True + False + True + True + + + False + False + 2 + + + + + Show RabbitVCS debugging tools + True + True + False + The debug menu is used to diagnose problems with RabbitVCS itself + True + + + False + False + 3 + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + + + General + + + False + + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Program used to compare files</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + 6 + + + True + True + + + 0 + + + + + True + True + True + Browse... + + + + True + gtk-harddisk + + + + + False + False + 1 + + + + + False + False + 0 + + + + + Show new version on the left side + True + True + False + True + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + + + True + External Programs + + + 1 + False + + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>URL History</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + + + True + 0 + Number of URLs to remember + + + 0 + + + + + 60 + True + True + + + False + False + 1 + + + + + gtk-clear + True + True + True + True + + + + False + False + 2 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>Log Messages</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + + + True + 0 + Number of messages to remember + word-char + + + 0 + + + + + 60 + True + True + + + False + False + 2 + + + + + gtk-clear + True + True + True + True + + + + False + False + end + 1 + + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + vertical + 6 + + + True + 0 + <b>Authentication</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + 6 + + + True + 0.0099999997764825821 + Clear your authentication information + + + 0 + + + + + gtk-clear + True + True + True + True + + + + False + False + end + 1 + + + + + + + False + False + 1 + + + + + False + False + 2 + + + + + + + True + Saved Data + + + 2 + False + + + + + True + 12 + vertical + 6 + + + True + 0 + 0 + <b>Logging Options</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + + + True + 0 + Type: + + + False + False + 0 + + + + + True + + + False + False + end + 1 + + + + + False + False + 0 + + + + + True + + + True + 0 + Minimum level to log + + + False + False + 0 + + + + + True + + + False + False + end + 1 + + + + + False + False + 1 + + + + + + + 1 + + + + + + + True + Logging + + + 3 + False + + + + + True + 12 + vertical + 6 + + + True + 0 + 6 + 6 + + + True + 3 + 2 + 12 + 6 + + + True + 0 + <b>Checker type:</b> + True + + + GTK_FILL + + + + + True + 0 + <b>Memory usage:</b> + True + + + 2 + 3 + GTK_FILL + + + + + True + 0 + Unknown + + + 1 + 2 + GTK_FILL + + + + + True + 0 + Unknown + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + True + 0 + <b>Process ID:</b> + True + + + 1 + 2 + GTK_FILL + + + + + True + 0 + Unknown + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + + + False + 6 + 0 + + + + + True + + + False + 1 + + + + + True + 0 + none + + + True + 0 + 0 + 12 + 12 + 12 + 12 + + + + + + + + True + <b>Other Information</b> + True + + + + + 2 + + + + + True + center + + + Refresh Information + True + True + True + + + + False + False + 0 + + + + + Restart Checker + True + True + True + + + + False + False + 1 + + + + + Stop Checker + True + True + True + 0.54000002145767212 + + + + False + False + 2 + + + + + False + False + 3 + + + + + + + True + Status Checker + + + 4 + False + + + + + True + 12 + vertical + 6 + + + True + 0 + <b>Configuration Editor</b> + True + + + False + False + 0 + + + + + True + 12 + + + + + + 1 + + + + + + + True + Git + + + 5 + False + + + + + 0 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 1 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/switch.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/switch.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/switch.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/switch.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,205 @@ + + + + + + 550 + True + Switch + center + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Switch Details</b> + True + + + 0 + + + + + True + 12 + + + True + vertical + 6 + + + True + + + 100 + True + 0 + 5 + From: + + + False + False + 0 + + + + + True + True + + + 1 + + + + + 0 + + + + + True + + + 100 + True + 0 + 5 + To: + + + False + False + 0 + + + + + True + + + 1 + + + + + False + False + 1 + + + + + + + False + False + 1 + + + + + False + False + 0 + + + + + True + vertical + 6 + + + True + 0 + <b>Revision</b> + True + + + 0 + + + + + True + 12 + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 2 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/ui/xml/update.xml rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/update.xml --- rabbitvcs-0.13.1/rabbitvcs/ui/xml/update.xml 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/ui/xml/update.xml 2011-01-14 14:51:17.000000000 +0000 @@ -0,0 +1,185 @@ + + + + + + 400 + True + Update + center-always + rabbitvcs-small + + + + True + 12 + vertical + 18 + + + True + vertical + 6 + + + True + 0 + <b>Revision</b> + True + + + False + False + 0 + + + + + True + 12 + + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + vertical + 6 + + + True + 0 + <b>Options</b> + True + + + False + False + 0 + + + + + True + 12 + + + True + vertical + + + Recursive + True + True + False + True + True + + + False + False + 0 + + + + + Omit Externals + True + True + False + True + + + False + False + 1 + + + + + Rollback to specified revision number + True + False + True + False + True + + + 2 + + + + + + + False + False + 1 + + + + + 2 + + + + + True + 6 + end + + + gtk-cancel + True + True + True + True + + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + + + + False + False + 1 + + + + + False + False + end + 0 + + + + + + diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/configspec/configspec.ini rabbitvcs-0.15.0.5/rabbitvcs/util/configspec/configspec.ini --- rabbitvcs-0.13.1/rabbitvcs/util/configspec/configspec.ini 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/configspec/configspec.ini 2011-11-04 16:40:03.000000000 +0000 @@ -0,0 +1,18 @@ +[general] +language = string(default="English") +enable_attributes = boolean(default=True) +enable_emblems = boolean(default=True) +enable_recursive = boolean(default=True) +show_debug = boolean(default=False) + +[external] +diff_tool = string(default="/usr/bin/meld") +diff_tool_swap = boolean(default=False) + +[cache] +number_repositories = integer(default=30) +number_messages = integer(default=30) + +[logging] +type = option("None", "File", "Console", "Both", default="Both") +level = option("Debug", "Warning", "Info", "Error", "Critical", default="Error") diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/contextmenuitems.py rabbitvcs-0.15.0.5/rabbitvcs/util/contextmenuitems.py --- rabbitvcs-0.13.1/rabbitvcs/util/contextmenuitems.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/contextmenuitems.py 2011-05-24 13:07:18.000000000 +0000 @@ -0,0 +1,791 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2010 by Jason Heeris +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os.path + +import os +if "NAUTILUS_PYTHON_REQUIRE_GTK3" in os.environ and os.environ["NAUTILUS_PYTHON_REQUIRE_GTK3"]: + from gi.repository import Gtk as gtk +else: + import gtk + +import rabbitvcs.util.helper + +from rabbitvcs import gettext +_ = gettext.gettext + +from rabbitvcs.util.log import Log +log = Log("rabbitvcs.ui.contextmenuitems") +_ = gettext.gettext + + +SEPARATOR = u'\u2015' * 10 + +class MenuItem(object): + """ + This is the base class for a definition of a menu item. Consider this + "abstract" (in the language of Java) - it makes no sense to instantiate it + directly. If you want to define a new kind of menu item, you need to + subclass it like so: + + class MenuPerformMagic: + identifier = "RabbitVCS::Perform_Magic" + label = _("Perform Magic") + tooltip = _("Put on your robe and wizard hat") + icon = "rabbitvcs-wand" # or, say, gtk.STOCK_OPEN + + There is some introspection magic that goes on to associate the items + themselves with certain methods of a ContextMenuCondition object or a + ContextMenuCallback object. This is done by looking at the identifier - the + part of the identifier after "::" is converted to lowercase and the item + looks for a method of that name (eg. in the example above, + "perform_magic"). + + It is easy to override this, just define condition_name and callback_name + to be what you need. If the item cannot find anything, it defaults to not + assigning the callback and having the condition return False. + + There a few ways to organise this (and maybe it would be better to have the + GtkContextMenu class do it), but this is it for the moment. + """ + + @staticmethod + def default_condition(*args, **kwargs): + return False + + @staticmethod + def make_default_name(identifier): + return identifier.split(MenuItem.IDENTIFIER_SEPARATOR)[-1].lower() + + IDENTIFIER_SEPARATOR = "::" + + # These are all explicitly defined here to make it obvious what a subclass + # needs to set up. + + # This is relevant for GTK and Nautilus - they require unique identifiers + # for all the elements of their menus. Make sure it starts with + # "RabbitVCS::" + identifier = None + + # The label that appears on the menu item. It is up to the subclass to + # designate it as translatable. + label = None + + # The tooltip for the menu item. It is up to the subclass to designate it as + # translatable. + tooltip = "" + + # The icon that will appear on the menu item. This can be, say, + # "rabbitvcs-something" or gtk.STOCK_SOMETHING + icon = None + + # This is a string that holds the name of the function that is called when + # the menu item is activated (it is assigned to + # self.signals["activate"]["callback"]) + # + # The menu item will look for a callable attribute of this name in the + # callback object passed in to the constructor. If it is None, it will try + # to assign a default callback based on the identifier. If nothing is found + # then no callback will be assigned to the "activate" signal. + callback_name = None + callback_args = () + + + # This is a string that holds the name of the function that is called to + # determine whether to show the item. + # + # The menu item will look for a callable attribute of this name in the + # callback object passed in to the constructor. If it is None, or False, or + # it cannot find anything, it will set up a function that returns False. + condition_name = None + condition_args = () + + def __init__(self, conditions, callbacks): + """ + Creates a new menu item for constructing the GTK context menu. + """ + + self.signals = {} + + default_name = MenuItem.make_default_name(self.identifier) + + # These flags are used for sanity checks that developers can run to + # ensure completeness of conditions and callbacks. + # See contextmenu.TestMenuItemFunctions() + self.found_callback = False + self.found_condition = False + + # If no callback name is set, assign the default + if self.callback_name is None: + # log.debug("Using default callback name: %s" % default_name) + self.callback_name = default_name + + # Try to get the callback function for this item + self.callback = self._get_function(callbacks, self.callback_name) + +# else: +# log.debug("Could not find callback for %s" % self.identifier) + + self.condition = { + "callback": MenuItem.default_condition, + "args": self.condition_args + } + + if self.condition_name is None: + self.condition_name = default_name + + condition = self._get_function(conditions, self.condition_name) + + if condition: + self.condition["callback"] = condition + self.found_condition = True +# else: +# log.debug("Could not find condition for %s" % self.identifier) + + def show(self): + return self.condition["callback"](*self.condition["args"]) + + def _get_function(self, object, name): + + function = None + + if hasattr(object, name): + + attr = getattr(object, name) + if callable(attr): + function = attr + + return function + + def make_magic_id(self, id_magic = None): + identifier = self.identifier + + if id_magic: + identifier = identifier + "-" + str(id_magic) + + return identifier + + def make_action(self, id_magic = None): + """ + Creates the GTK Action for the menu item. To avoid GTK "helpfully" + preventing us from adding duplicates (eg. separators), you can pass in + a string that will be appended and separated from the actual identifier. + """ + identifier = self.make_magic_id(id_magic) + + return gtk.Action(identifier, self.make_label(), None, None) + + def make_thunar_action(self, id_magic = None): + identifier = self.make_magic_id(id_magic) + + action = RabbitVCSAction( + identifier, + self.make_label(), + self.tooltip, + self.icon + ) + + return action + + def make_gtk_menu_item(self, id_magic = None): + action = self.make_action(id_magic) + + if self.icon: + # We use this instead of gtk.Action.set_icon_name because + # that method is not available until pygtk 2.16 + action.set_menu_item_type(gtk.ImageMenuItem) + menuitem = action.create_menu_item() + menuitem.set_image(gtk.image_new_from_icon_name(self.icon, gtk.ICON_SIZE_MENU)) + else: + menuitem = action.create_menu_item() + + return menuitem + + def make_nautilus_menu_item(self, id_magic = None): + # WARNING: this import is here because it will fail if it is not done + # inside a nautilus process and therefore can't be in the module proper. + # I'm happy to let the exception propagate the rest of the time, since + # this method shouldn't be called outside of nautilus. + identifier = self.make_magic_id(id_magic) + + try: + import nautilus + menuitem = nautilus.MenuItem( + identifier, + self.make_label(), + self.tooltip, + self.icon + ) + except ImportError: + from gi.repository import Nautilus + menuitem = Nautilus.MenuItem( + name=identifier, + label=self.make_label(), + tip=self.tooltip, + icon=self.icon + ) + + + return menuitem + + def make_label(self): + label = self.label.replace('_', '__') + + return label + +class MenuSeparator(MenuItem): + identifier = "RabbitVCS::Separator" + label = SEPARATOR + + def make_insensitive(self, menuitem): + menuitem.set_property("sensitive", False) + + def make_thunar_action(self, id_magic = None): + menuitem = super(MenuSeparator, self).make_thunar_action(id_magic) + self.make_insensitive(menuitem) + return menuitem + # FIXME: I thought that this would work to create separators, + # but all I get are black "-"s... + # I thought + #~ identifier = self.make_magic_id(id_magic) + #~ # This information is not actually used, but is necessary for + #~ # the required subclassing of GtkAction. + #~ action = ThunarSeparator( + #~ identifier, + #~ self.label, + #~ self.tooltip, + #~ self.icon, + #~ ) + #~ return action + + # Make separators insensitive + def make_gtk_menu_item(self, id_magic = None): + menuitem = gtk.SeparatorMenuItem() + menuitem.show() + return menuitem + + def make_nautilus_menu_item(self, id_magic = None): + menuitem = super(MenuSeparator, self).make_nautilus_menu_item(id_magic) + self.make_insensitive(menuitem) + return menuitem + +class MenuDebug(MenuItem): + identifier = "RabbitVCS::Debug" + label = _("Debug") + icon = "rabbitvcs-monkey" + +class MenuBugs(MenuItem): + identifier = "RabbitVCS::Bugs" + label = _("Bugs") + icon = "rabbitvcs-bug" + +class MenuDebugShell(MenuItem): + identifier = "RabbitVCS::Debug_Shell" + label = _("Open Shell") + icon = "gnome-terminal" + condition_name = "debug" + +class MenuRefreshStatus(MenuItem): + identifier = "RabbitVCS::Refresh_Status" + label = _("Refresh Status") + icon = "rabbitvcs-refresh" + +class MenuDebugRevert(MenuItem): + identifier = "RabbitVCS::Debug_Revert" + label = _("Debug Revert") + tooltip = _("Reverts everything it sees") + icon = "rabbitvcs-revert" + condition_name = "debug" + +class MenuDebugInvalidate(MenuItem): + identifier = "RabbitVCS::Debug_Invalidate" + label = _("Invalidate") + tooltip = _("Force an invalidate_extension_info() call") + icon = "rabbitvcs-clear" + condition_name = "debug" + +class MenuDebugAddEmblem(MenuItem): + identifier = "RabbitVCS::Debug_Add_Emblem" + label = _("Add Emblem") + tooltip = _("Add an emblem") + icon = "rabbitvcs-emblems" + condition_name = "debug" + +class MenuCheckout(MenuItem): + identifier = "RabbitVCS::Checkout" + label = _("Checkout...") + tooltip = _("Check out a working copy") + icon = "rabbitvcs-checkout" + +class MenuUpdate(MenuItem): + identifier = "RabbitVCS::Update" + label = _("Update") + tooltip = _("Update a working copy") + icon = "rabbitvcs-update" + +class MenuCommit(MenuItem): + identifier = "RabbitVCS::Commit" + label = _("Commit") + tooltip = _("Commit modifications to the repository") + icon = "rabbitvcs-commit" + +class MenuRabbitVCS(MenuItem): + identifier = "RabbitVCS::RabbitVCS" + label = _("RabbitVCS") + icon = "rabbitvcs" + +class MenuRabbitVCSSvn(MenuItem): + identifier = "RabbitVCS::RabbitVCS_Svn" + label = _("RabbitVCS SVN") + icon = "rabbitvcs" + +class MenuRabbitVCSGit(MenuItem): + identifier = "RabbitVCS::RabbitVCS_Git" + label = _("RabbitVCS Git") + icon = "rabbitvcs" + +class MenuRepoBrowser(MenuItem): + identifier = "RabbitVCS::Repo_Browser" + label = _("Repository Browser") + tooltip = _("Browse a repository tree") + icon = gtk.STOCK_FIND + +class MenuCheckForModifications(MenuItem): + identifier = "RabbitVCS::Check_For_Modifications" + label = _("Check for Modifications...") + tooltip = _("Check for modifications made to the repository") + icon = "rabbitvcs-checkmods" + +class MenuDiffMenu(MenuItem): + identifier = "RabbitVCS::Diff_Menu" + label = _("Diff Menu...") + tooltip = _("List of comparison options") + icon = "rabbitvcs-diff" + +class MenuDiff(MenuItem): + identifier = "RabbitVCS::Diff" + label = _("View diff against base") + tooltip = _("View the modifications made to a file") + icon = "rabbitvcs-diff" + +class MenuDiffMultiple(MenuItem): + identifier = "RabbitVCS::Diff_Multiple" + label = _("View diff between files/folders") + tooltip = _("View the differences between two files") + icon = "rabbitvcs-diff" + +class MenuDiffPrevRev(MenuItem): + identifier = "RabbitVCS::Diff_Previous_Revision" + label = _("View diff against previous revision") + tooltip = _("View the modifications made to a file since its last change") + icon = "rabbitvcs-diff" + +class MenuCompareTool(MenuItem): + identifier = "RabbitVCS::Compare_Tool" + label = _("Compare with base") + tooltip = _("Compare with base using side-by-side comparison tool") + icon = "rabbitvcs-compare" + +class MenuCompareToolMultiple(MenuItem): + identifier = "RabbitVCS::Compare_Tool_Multiple" + label = _("Compare files/folders") + tooltip = _("Compare the differences between two items") + icon = "rabbitvcs-compare" + +class MenuCompareToolPrevRev(MenuItem): + identifier = "RabbitVCS::Compare_Tool_Previous_Revision" + label = _("Compare with previous revision") + tooltip = _("Compare with previous revision using side-by-side comparison tool") + icon = "rabbitvcs-compare" + +class MenuShowChanges(MenuItem): + identifier = "RabbitVCS::Show_Changes" + label = _("Show Changes...") + tooltip = _("Show changes between paths and revisions") + icon = "rabbitvcs-changes" + +class MenuShowLog(MenuItem): + identifier = "RabbitVCS::Show_Log" + label = _("Show Log") + tooltip = _("Show a file's log information") + icon = "rabbitvcs-show_log" + +class MenuAdd(MenuItem): + identifier = "RabbitVCS::Add" + label = _("Add") + tooltip = _("Schedule items to be added to the repository") + icon = "rabbitvcs-add" + +class MenuAddToIgnoreList(MenuItem): + identifier = "RabbitVCS::Add_To_Ignore_List" + label = _("Add to ignore list") + icon = None + +class MenuUpdateToRevision(MenuItem): + identifier = "RabbitVCS::Update_To_Revision" + label = _("Update to revision...") + tooltip = _("Update a file to a specific revision") + icon = "rabbitvcs-update" + +class MenuRename(MenuItem): + identifier = "RabbitVCS::Rename" + label = _("Rename...") + tooltip = _("Schedule an item to be renamed on the repository") + icon = "rabbitvcs-rename" + +class MenuDelete(MenuItem): + identifier = "RabbitVCS::Delete" + label = _("Delete") + tooltip = _("Schedule an item to be deleted from the repository") + icon = "rabbitvcs-delete" + +class MenuRevert(MenuItem): + identifier = "RabbitVCS::Revert" + label = _("Revert") + tooltip = _("Revert an item to its unmodified state") + icon = "rabbitvcs-revert" + +class MenuMarkResolved(MenuItem): + identifier = "RabbitVCS::Mark_Resolved" + label = _("Mark as Resolved") + tooltip = _("Mark a conflicted item as resolved") + icon = "rabbitvcs-resolve" + +class MenuRestore(MenuItem): + identifier = "RabbitVCS::Restore" + label = _("Restore") + tooltip = _("Restore a missing item") + +class MenuRelocate(MenuItem): + identifier = "RabbitVCS::Relocate" + label = _("Relocate...") + tooltip = _("Relocate your working copy") + icon = "rabbitvcs-relocate" + +class MenuGetLock(MenuItem): + identifier = "RabbitVCS::Get_Lock" + label = _("Get Lock...") + tooltip = _("Locally lock items") + icon = "rabbitvcs-lock" + +class MenuUnlock(MenuItem): + identifier = "RabbitVCS::Unlock" + label = _("Release Lock...") + tooltip = _("Release lock on an item") + icon = "rabbitvcs-unlock" + +class MenuCleanup(MenuItem): + identifier = "RabbitVCS::Cleanup" + label = _("Cleanup") + tooltip = _("Clean up working copy") + icon = "rabbitvcs-cleanup" + +class MenuExport(MenuItem): + identifier = "RabbitVCS::Export" + label = _("Export...") + tooltip = _("Export a working copy or repository with no versioning information") + icon = "rabbitvcs-export" + +class MenuSVNExport(MenuExport): + identifier = "RabbitVCS::SVN_Export" + pass + +class MenuGitExport(MenuExport): + identifier = "RabbitVCS::Git_Export" + pass + +class MenuCreateRepository(MenuItem): + identifier = "RabbitVCS::Create_Repository" + label = _("Create Repository here") + tooltip = _("Create a repository in a folder") + icon = "rabbitvcs-run" + +class MenuImport(MenuItem): + identifier = "RabbitVCS::Import" + label = _("Import") + tooltip = _("Import an item into a repository") + icon = "rabbitvcs-import" + # "import" is reserved + condition_name = "_import" + callback_name = "_import" + + +class MenuBranchTag(MenuItem): + identifier = "RabbitVCS::Branch_Tag" + label = _("Branch/tag...") + tooltip = _("Copy an item to another location in the repository") + icon = "rabbitvcs-branch" + +class MenuSwitch(MenuItem): + identifier = "RabbitVCS::Switch" + label = _("Switch...") + tooltip = _("Change the repository location of a working copy") + icon = "rabbitvcs-switch" + +class MenuMerge(MenuItem): + identifier = "RabbitVCS::Merge" + label = _("Merge...") + tooltip = _("A wizard with steps for merging") + icon = "rabbitvcs-merge" + +class MenuAnnotate(MenuItem): + identifier = "RabbitVCS::Annotate" + label = _("Annotate...") + tooltip = _("Annotate a file") + icon = "rabbitvcs-annotate" + +class MenuCreatePatch(MenuItem): + identifier = "RabbitVCS::Create_Patch" + label = _("Create Patch...") + tooltip = _("Creates a unified diff file with all changes you made") + icon = "rabbitvcs-createpatch" + +class MenuApplyPatch(MenuItem): + identifier = "RabbitVCS::Apply_Patch" + label = _("Apply Patch...") + tooltip = _("Applies a unified diff file to the working copy") + icon = "rabbitvcs-applypatch" + +class MenuProperties(MenuItem): + identifier = "RabbitVCS::Properties" + label = _("Properties") + tooltip = _("View the properties of an item") + icon = "rabbitvcs-properties" + +class MenuHelp(MenuItem): + identifier = "RabbitVCS::Help" + label = _("Help") + tooltip = _("View help") + icon = "rabbitvcs-help" + +class MenuSettings(MenuItem): + identifier = "RabbitVCS::Settings" + label = _("Settings") + tooltip = _("View or change RabbitVCS settings") + icon = "rabbitvcs-settings" + +class MenuAbout(MenuItem): + identifier = "RabbitVCS::About" + label = _("About") + tooltip = _("About RabbitVCS") + icon = "rabbitvcs-about" + +class MenuOpen(MenuItem): + identifier = "RabbitVCS::Open" + label = _("Open") + tooltip = _("Open a file") + icon = gtk.STOCK_OPEN + # Not sure why, but it was like this before... + condition_name = "_open" + callback_name = "_open" + +class MenuBrowseTo(MenuItem): + identifier = "RabbitVCS::Browse_To" + label = _("Browse to") + tooltip = _("Browse to a file or folder") + icon = gtk.STOCK_HARDDISK + +class PropMenuRevert(MenuItem): + identifier = "RabbitVCS::Property_Revert" + label = _("Revert property") + icon = "rabbitvcs-revert" + tooltip = _("Revert this property to its original state") + +class PropMenuRevertRecursive(MenuItem): + identifier = "RabbitVCS::Property_Revert_Recursive" + label = _("Revert property (recursive)") + icon = "rabbitvcs-revert" + tooltip = _("Revert this property to its original state (recursive)") + condition_name = "property_revert" + +class PropMenuDelete(MenuItem): + identifier = "RabbitVCS::Property_Delete" + label = _("Delete property") + icon = "rabbitvcs-delete" + tooltip = _("Delete this property") + +class PropMenuDeleteRecursive(MenuItem): + identifier = "RabbitVCS::Property_Delete_Recursive" + label = _("Delete property (recursive)") + icon = "rabbitvcs-delete" + tooltip = _("Delete this property (recursive)") + condition_name = "property_delete" + +class PropMenuEdit(MenuItem): + identifier = "RabbitVCS::Property_Edit" + label = _("Edit details") + icon = gtk.STOCK_EDIT + tooltip = _("Show and edit property details") + +class MenuInitializeRepository(MenuItem): + identifier = "RabbitVCS::Initialize_Repository" + label = _("Initialize Repository") + icon = "rabbitvcs-run" + +class MenuClone(MenuItem): + identifier = "RabbitVCS::Clone" + label = _("Clone") + icon = "rabbitvcs-checkout" + +class MenuFetchPull(MenuItem): + identifier = "RabbitVCS::Fetch_Pull" + label = _("Fetch/Pull") + icon = "rabbitvcs-update" + +class MenuPush(MenuItem): + identifier = "RabbitVCS::Push" + label = _("Push") + icon = "rabbitvcs-push" + +class MenuBranches(MenuItem): + identifier = "RabbitVCS::Branches" + label = _("Branches") + icon = "rabbitvcs-branch" + +class MenuTags(MenuItem): + identifier = "RabbitVCS::Tags" + label = _("Tags") + icon = "rabbitvcs-branch" + +class MenuRemotes(MenuItem): + identifier = "RabbitVCS::Remotes" + label = _("Remotes") + icon = "rabbitvcs-checkmods" + +class MenuClean(MenuCleanup): + identifier = "RabbitVCS::Clean" + label = _("Clean") + +class MenuReset(MenuItem): + identifier = "RabbitVCS::Reset" + label = _("Reset") + icon = "rabbitvcs-reset" + +class MenuStage(MenuItem): + identifier = "RabbitVCS::Stage" + label = _("Stage") + icon = "rabbitvcs-add" + +class MenuUnstage(MenuItem): + identifier = "RabbitVCS::Unstage" + label = _("Unstage") + icon = "rabbitvcs-unstage" + +class MenuEditConflicts(MenuItem): + identifier = "RabbitVCS::Edit_Conflicts" + label = _("Edit conflicts") + icon = "rabbitvcs-editconflicts" + +def get_ignore_list_items(paths): + """ + Build up a list of items to ignore based on the selected paths + + @param paths: The selected paths + @type paths: list + + """ + ignore_items = [] + + # Used to weed out duplicate menu items + added_ignore_labels = [] + + # These are ignore-by-filename items + ignorebyfilename_index = 0 + for path in paths: + basename = os.path.basename(path) + if basename not in added_ignore_labels: + key = "IgnoreByFileName%s" % str(ignorebyfilename_index) + + class MenuIgnoreFilenameClass(MenuItem): + identifier = "RabbitVCS::%s" % key + label = basename + tooltip = _("Ignore item by filename") + callback_name = "ignore_by_filename" + callback_args = (path) + condition_name = "ignore_by_filename" + condition_args = (path) + + ignore_items.append((MenuIgnoreFilenameClass, None)) + + # These are ignore-by-extension items + ignorebyfileext_index = 0 + for path in paths: + extension = rabbitvcs.util.helper.get_file_extension(path) + + ext_str = "*%s"%extension + if ext_str not in added_ignore_labels: + + class MenuIgnoreFileExtClass(MenuItem): + identifier = "RabbitVCS::%s" % key + label = ext_str + tooltip = _("Ignore item by file extension") + callback_name = "ignore_by_file_extension" + callback_args = (path, extension) + condition_name = "ignore_by_file_extension" + condition_args = (path, extension) + + ignore_items.append((MenuIgnoreFileExtClass, None)) + + return ignore_items + +class RabbitVCSAction(gtk.Action): + """ + Sub-classes gtk.Action so that we can have submenus + """ + + __gtype_name__ = "RabbitVCSAction" + + def __init__(self, name, label, tooltip, stock_id): + gtk.Action.__init__(self, name, label, tooltip, stock_id) + self.sub_actions = None + self.stock_id = stock_id + + def __repr__(self): + return self.get_name() + + def set_sub_actions(self, sub_actions): + self.sub_actions = sub_actions + + def do_create_menu_item(self): + menu_item = gtk.ImageMenuItem() + if self.stock_id: + try: + self.set_icon_name(self.stock_id) + except AttributeError, e: + menu_item.set_image(gtk.image_new_from_icon_name(self.stock_id, gtk.ICON_SIZE_MENU)) + + if self.sub_actions is not None: + menu = gtk.Menu() + menu_item.set_submenu(menu) + + for sub_action in self.sub_actions: + subitem = sub_action.create_menu_item() + menu.append(subitem) + subitem.show() + + return menu_item + +# FIXME: apparently it's possible to get real GtkSeparators in a Thunar +# menu, but this doesn't seem to work. +class ThunarSeparator(RabbitVCSAction): + + def do_create_menu_item(self): + return gtk.SeparatorMenuItem() diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/contextmenu.py rabbitvcs-0.15.0.5/rabbitvcs/util/contextmenu.py --- rabbitvcs-0.13.1/rabbitvcs/util/contextmenu.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/contextmenu.py 2011-10-17 19:05:06.000000000 +0000 @@ -0,0 +1,1411 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2010 by Jason Heeris +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os.path +from time import sleep +from collections import deque + +try: + from gi.repository import GObject as gobject +except ImportError: + import gobject + +import os +if "NAUTILUS_PYTHON_REQUIRE_GTK3" in os.environ and os.environ["NAUTILUS_PYTHON_REQUIRE_GTK3"]: + from gi.repository import Gtk as gtk +else: + import gtk + +from rabbitvcs.vcs import create_vcs_instance, VCS_SVN, VCS_GIT, VCS_DUMMY +from rabbitvcs.util.log import Log +from rabbitvcs import gettext +from rabbitvcs.util.settings import SettingsManager +import rabbitvcs.util.helper + +# Yes, * imports are bad. You write it out then. +from contextmenuitems import * + +log = Log("rabbitvcs.util.contextmenu") +_ = gettext.gettext + +settings = SettingsManager() + +class MenuBuilder(object): + """ + Generalised menu builder class. Subclasses must provide: + + connect_to_signal(self, menuitem, callback, callback_args) - connect the + menu item to a signal (or do whatever needs to be done) so that the callback + is called upon activation. + + In actual fact, a standard GTK compatible method for this is provided by + this class. All a subclass has to do is define the class parameter "signal", + and it will be automatically done. + + make_menu_item(self, item, id_magic) - create the menu item for whatever + toolkit (usually this should be just call a convenience method on the + MenuItem instance). + + attach_submenu(self, menu_node, submenu_list) - given a list of whatever + make_menu_item(...) returns, create a submenu and attach it to the given + node. + + top_level_menu(self, items) - in some circumstances we need to treat the top + level menu differently (eg. Nautilus, because Xenu said so). This processes + a list of menu items returned by make_menu_item(...) to create the overall + menu. + """ + + def __init__(self, structure, conditions, callbacks): + """ + @param structure: Menu structure + @type structure: list + + Note on "structure". The menu structure is defined in a list of tuples + of two elements each. The first element is a class - the MenuItem + subclass that defines the menu interface (see below). + + The second element is either None (if there is no submenu) or a list of + tuples if there is a submenu. The submenus are generated recursively. + FYI, this is a list of tuples so that we retain the desired menu item + order (dicts do not retain order) + + Example: + [ + (MenuClassOne, [ + (MenuClassOneSubA, None), + (MenuClassOneSubB, None) + ]), + (MenuClassTwo, None), + (MenuClassThree, None) + ] + + """ + # The index is mostly for identifier magic + index = 0 + last_level = -1 + last_item = last_menuitem = None + + stack = [] # ([items], last_item, last_menuitem) + flat_structure = rabbitvcs.util.helper.walk_tree_depth_first( + structure, + show_levels=True, + preprocess=lambda x: x(conditions, callbacks), + filter=lambda x: x.show()) + + # Here's how this works: we walk the tree, which is a series of (level, + # MenuItem instance) tuples. We accumulate items in the list in + # stack[level][0], and when we go back up a level we put them in a + # submenu (as defined by the subclasses). We need to keep track of the + # last item on each level, in case they are separators, so that's on the + # stack too. + for (level, item) in flat_structure: + index += 1 + + # Have we dropped back a level? Restore previous context + if level < last_level: + # We may have ended up descending several levels (it works, but + # please no-one write triply nested menus, it's just dumb). + for num in range(last_level - level): + # Remove separators at the end of menus + if type(last_item) == MenuSeparator: + stack[-1][0].remove(last_menuitem) + + (items, last_item, last_menuitem) = stack.pop() + + # Every time we back out of a level, we attach the list of + # items as a submenu, however the subclass wants to do it. + self.attach_submenu(last_menuitem, items) + + # Have we gone up a level? Save the context and create a submenu + if level > last_level: + # Skip separators at the start of a menu + if type(item) == MenuSeparator: continue + + stack.append(([], last_item, last_menuitem)) + + last_item = last_menuitem = None + + # Skip duplicate separators + if (type(last_item) == type(item) == MenuSeparator and + level == last_level): + continue + + menuitem = self.make_menu_item(item, index) + + self.connect_signal(menuitem, item.callback, item.callback_args) + + stack[-1][0].append(menuitem) + + last_item = item + last_menuitem = menuitem + last_level = level + + # Hey, we're out of the loop. Go back up any remaining levels (in case + # there were submenus at the end) and finish the job. + for (items, last_item2, last_menuitem2) in stack[:0:-1]: + + if type(last_item) == MenuSeparator: + stack[-1][0].remove(last_menuitem) + + self.attach_submenu(last_menuitem2, items) + + last_item = last_item2 + last_menuitem = last_menuitem2 + + if stack: + self.menu = self.top_level_menu(stack[0][0]) + else: + log.debug("Empty top level menu!") + self.menu = self.top_level_menu([]) + + def connect_signal(self, menuitem, callback, callback_args): + if callback: + if callback_args: + menuitem.connect(self.signal, callback, callback_args) + else: + menuitem.connect(self.signal, callback) + +class GtkContextMenu(MenuBuilder): + """ + Provides a standard Gtk Context Menu class used for all context menus + in gtk dialogs/windows. + + """ + + signal = "button-press-event" + + def make_menu_item(self, item, id_magic): + return item.make_gtk_menu_item(id_magic) + + def attach_submenu(self, menu_node, submenu_list): + submenu = gtk.Menu() + menu_node.set_submenu(submenu) + [submenu.add(item) for item in submenu_list] + + def top_level_menu(self, items): + menu = gtk.Menu() + [menu.add(item) for item in items] + return menu + + def show(self, event): + self.menu.show_all() + self.menu.popup(None, None, None, event.button, event.time) + + def get_widget(self): + return self.menu + +class GtkContextMenuCaller: + """ + Provides an abstract interface to be inherited by dialogs/windows that call + a GtkContextMenu. Allows us to have a standard common set of methods we can + call from the callback object. + """ + + def __init__(self): + pass + + def on_context_menu_command_finished(self): + pass + + def rescan_after_process_exit(self, proc, paths=None): + self.execute_after_process_exit(proc, self.on_context_menu_command_finished) + + def execute_after_process_exit(self, proc, callback=None): + if callback is None: + callback = self.on_context_menu_command_finished + + def is_process_still_alive(): + log.debug("is_process_still_alive() for pid: %i" % proc.pid) + # First we need to see if the process is still running + + retval = proc.poll() + + log.debug("%s" % retval) + + still_going = (retval is None) + + if not still_going and callable(callback): + callback() + + return still_going + + # Add our callback function on a 1 second timeout + gobject.timeout_add_seconds(1, is_process_still_alive) + +class ContextMenuCallbacks: + """ + The base class for context menu callbacks. This is inheritied by + sub-classes. + """ + def __init__(self, caller, base_dir, vcs_client, paths=[]): + """ + @param caller: The calling object + @type caller: RabbitVCS extension + + @param base_dir: The curent working directory + @type base_dir: string + + @param vcs_client: The vcs client to be used + @type vcs_client: rabbitvcs.vcs.create_vcs_instance() + + @param paths: The selected paths + @type paths: list + + """ + self.caller = caller + self.base_dir = base_dir + self.vcs_client = vcs_client + self.paths = paths + + def debug_shell(self, widget, data1=None, data2=None): + """ + + Open up an IPython shell which shares the context of the extension. + + See: http://ipython.scipy.org/moin/Cookbook/EmbeddingInGTK + + """ + import gtk + from rabbitvcs.debug.ipython_view import IPythonView + + window = gtk.Window() + window.set_size_request(750,550) + window.set_resizable(True) + window.set_position(gtk.WIN_POS_CENTER) + scrolled_window = gtk.ScrolledWindow() + scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + ipython_view = IPythonView() + ipython_view.updateNamespace(locals()) + ipython_view.set_wrap_mode(gtk.WRAP_CHAR) + ipython_view.show() + scrolled_window.add(ipython_view) + scrolled_window.show() + window.add(scrolled_window) + window.show() + + def refresh_status(self, widget, data1=None, data2=None): + """ + Refreshes an item status, which is actually just invalidate. + """ + + self.debug_invalidate(menu_item) + + def debug_revert(self, widget, data1=None, data2=None): + client = pysvn.Client() + for path in self.paths: + client.revert(path, recurse=True) + + def debug_invalidate(self, widget, data1=None, data2=None): + rabbitvcs_extension = self.caller + nautilusVFSFile_table = rabbitvcs_extension.nautilusVFSFile_table + for path in self.paths: + log.debug("callback_debug_invalidate() called for %s" % path) + if path in nautilusVFSFile_table: + nautilusVFSFile_table[path].invalidate_extension_info() + + def debug_add_emblem(self, widget, data1=None, data2=None): + def add_emblem_dialog(): + from subprocess import Popen, PIPE + command = ["zenity", "--entry", "--title=RabbitVCS", "--text=Emblem to add:"] + emblem = Popen(command, stdout=PIPE).communicate()[0].replace("\n", "") + + rabbitvcs_extension = self.caller + nautilusVFSFile_table = rabbitvcs_extension.nautilusVFSFile_table + for path in self.paths: + if path in nautilusVFSFile_table: + nautilusVFSFile_table[path].add_emblem(emblem) + return False + + gobject.idle_add(add_emblem_dialog) + + # End debugging callbacks + + def checkout(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("checkout", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def update(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("update", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def commit(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("commit", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def add(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("add", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def check_for_modifications(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("checkmods", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def delete(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("delete", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def revert(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("revert", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def diff(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("diff", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def diff_multiple(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("diff", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def diff_previous_revision(self, widget, data1=None, data2=None): + guess = self.vcs_client.guess(self.paths[0]) + if guess["vcs"] == rabbitvcs.vcs.VCS_SVN: + previous_revision_number = self.vcs_client.svn().get_revision(self.paths[0]) - 1 + + pathrev1 = rabbitvcs.util.helper.create_path_revision_string(self.vcs_client.svn().get_repo_url(self.paths[0]), previous_revision_number) + pathrev2 = rabbitvcs.util.helper.create_path_revision_string(self.paths[0], "working") + + proc = rabbitvcs.util.helper.launch_ui_window("diff", [pathrev1, pathrev2]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def compare_tool(self, widget, data1=None, data2=None): + pathrev1 = rabbitvcs.util.helper.create_path_revision_string(self.paths[0], "base") + pathrev2 = rabbitvcs.util.helper.create_path_revision_string(self.paths[0], "working") + + proc = rabbitvcs.util.helper.launch_ui_window("diff", ["-s", pathrev1, pathrev2]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def compare_tool_multiple(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("diff", ["-s"] + self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def compare_tool_previous_revision(self, widget, data1=None, data2=None): + guess = self.vcs_client.guess(self.paths[0]) + if guess["vcs"] == rabbitvcs.vcs.VCS_SVN: + previous_revision_number = self.vcs_client.svn().get_revision(self.paths[0]) - 1 + + pathrev1 = rabbitvcs.util.helper.create_path_revision_string(self.vcs_client.get_repo_url(self.paths[0]), previous_revision_number) + pathrev2 = rabbitvcs.util.helper.create_path_revision_string(self.paths[0], "working") + + proc = rabbitvcs.util.helper.launch_ui_window("diff", ["-s", pathrev1, pathrev2]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def show_changes(self, widget, data1=None, data2=None): + pathrev1 = rabbitvcs.util.helper.create_path_revision_string(self.paths[0]) + pathrev2 = pathrev1 + if len(self.paths) == 2: + pathrev2 = rabbitvcs.util.helper.create_path_revision_string(self.paths[1]) + + proc = rabbitvcs.util.helper.launch_ui_window("changes", [pathrev1, pathrev2]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def show_log(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("log", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def rename(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("rename", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def create_patch(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("createpatch", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def apply_patch(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("applypatch", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def properties(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("property_editor", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def about(self, widget, data1=None, data2=None): + rabbitvcs.util.helper.launch_ui_window("about") + + def settings(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("settings", [self.base_dir]) + self.caller.reload_settings(proc) + + def ignore_by_filename(self, widget, data1=None, data2=None): + path = self.paths[0] + base_dir = os.path.join(self.base_dir, os.path.dirname(path)) + proc = rabbitvcs.util.helper.launch_ui_window("ignore", [base_dir, os.path.basename(path)]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def ignore_by_file_extension(self, widget, data1=None, data2=None): + path = self.paths[0] + pattern = "*%s" % rabbitvcs.util.helper.get_file_extension(path) + base_dir = os.path.join(self.base_dir, os.path.dirname(path)) + proc = rabbitvcs.util.helper.launch_ui_window("ignore", [base_dir, pattern]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def get_lock(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("lock", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def branch_tag(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("branch", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def switch(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("switch", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def merge(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("merge", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def _import(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("import", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def export(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("export", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def svn_export(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("export", ["--vcs=svn", self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def git_export(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("export", ["--vcs=git", self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def update_to_revision(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("updateto", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def mark_resolved(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("markresolved", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def annotate(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("annotate", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def unlock(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("unlock", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def create_repository(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("create", ["--vcs", "svn", self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def relocate(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("relocate", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def cleanup(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("cleanup", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def restore(self, widget, data1=None, data2=None): + guess = self.vcs_client.guess(self.paths[0]) + if guess["vcs"] == rabbitvcs.vcs.VCS_SVN: + proc = rabbitvcs.util.helper.launch_ui_window("update", self.paths) + elif guess["vcs"] == rabbitvcs.vcs.VCS_GIT: + proc = rabbitvcs.util.helper.launch_ui_window("checkout", ["-q", "--vcs", "git"] + self.paths) + + self.caller.rescan_after_process_exit(proc, self.paths) + + def _open(self, widget, data1=None, data2=None): + pass + + def browse_to(self, widget, data1=None, data2=None): + pass + + def repo_browser(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("browser", [self.paths[0]]) + + def initialize_repository(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("create", ["--vcs", "git", self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def clone(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("clone", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def push(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("push", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def branches(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("branches", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def tags(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("tags", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def remotes(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("remotes", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def clean(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("clean", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def reset(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("reset", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def stage(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("stage", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def unstage(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("unstage", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, self.paths) + + def edit_conflicts(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("editconflicts", [self.paths[0]]) + self.caller.rescan_after_process_exit(proc, [self.paths[0]]) + +class ContextMenuConditions: + """ + Provides a standard interface to checking conditions for menu items. + + This class should never be instantied directly, rather the narrowly defined + FileManagerContextMenuConditions and GtkFilesContextMenuConditions classes + should be called. + + """ + def __init__(self): + pass + + def generate_path_dict(self, paths): + self.path_dict = { + "length": len(paths) + } + + checks = { + "is_svn" : lambda path: (self.vcs_client.guess(path)["vcs"] == VCS_SVN), + "is_git" : lambda path: (self.vcs_client.guess(path)["vcs"] == VCS_GIT), + "is_dir" : os.path.isdir, + "is_file" : os.path.isfile, + "exists" : os.path.exists, + "is_working_copy" : self.vcs_client.is_working_copy, + "is_in_a_or_a_working_copy" : self.vcs_client.is_in_a_or_a_working_copy, + "is_versioned" : self.vcs_client.is_versioned, + "is_normal" : lambda path: self.statuses[path].simple_content_status() == "unchanged" and self.statuses[path].simple_metadata_status() == "normal", + "is_added" : lambda path: self.statuses[path].simple_content_status() == "added", + "is_modified" : lambda path: self.statuses[path].simple_content_status() == "modified" or self.statuses[path].simple_metadata_status() == "modified", + "is_deleted" : lambda path: self.statuses[path].simple_content_status() == "deleted", + "is_ignored" : lambda path: self.statuses[path].simple_content_status() == "ignored", + "is_locked" : self.vcs_client.is_locked, + "is_missing" : lambda path: self.statuses[path].simple_content_status() == "missing", + "is_conflicted" : lambda path: self.statuses[path].simple_content_status() == "complicated", + "is_obstructed" : lambda path: self.statuses[path].simple_content_status() == "obstructed", + "has_unversioned" : lambda path: "unversioned" in self.text_statuses, + "has_added" : lambda path: "added" in self.text_statuses, + "has_modified" : lambda path: "modified" in self.text_statuses or "modified" in self.prop_statuses, + "has_deleted" : lambda path: "deleted" in self.text_statuses, + "has_ignored" : lambda path: "ignored" in self.text_statuses, + "has_missing" : lambda path: "missing" in self.text_statuses, + "has_conflicted" : lambda path: "complicated" in self.text_statuses, + "has_obstructed" : lambda path: "obstructed" in self.text_statuses + } + + for key,func in checks.items(): + self.path_dict[key] = False + + # Each path gets tested for each check + # If a check has returned True for any path, skip it for remaining paths + for path in paths: + for key, func in checks.items(): + try: + self.path_dict[key] = func(path) + except KeyError, e: + self.path_dict[key] = False + + def checkout(self, data=None): + if self.path_dict["length"] == 1: + if self.path_dict["is_git"]: + return (self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"]) + else: + return (self.path_dict["is_dir"] and + not self.path_dict["is_working_copy"]) + + return False + + def update(self, data=None): + return (self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"] and + not self.path_dict["is_added"]) + + def commit(self, data=None): + if self.path_dict["is_svn"] or self.path_dict["is_git"]: + if self.path_dict["is_in_a_or_a_working_copy"]: + if (self.path_dict["is_added"] or + self.path_dict["is_modified"] or + self.path_dict["is_deleted"] or + not self.path_dict["is_versioned"]): + return True + elif (self.path_dict["is_dir"]): + return True + return False + + def diff_menu(self, data=None): + return self.path_dict["is_in_a_or_a_working_copy"] + + def diff_multiple(self, data=None): + if (self.path_dict["length"] == 2 and + self.path_dict["is_versioned"] and + self.path_dict["is_in_a_or_a_working_copy"]): + return True + return False + + def compare_tool_multiple(self, data=None): + if (self.path_dict["length"] == 2 and + self.path_dict["is_versioned"] and + self.path_dict["is_in_a_or_a_working_copy"]): + return True + return False + + def diff(self, data=None): + if (self.path_dict["length"] == 1 and + self.path_dict["is_in_a_or_a_working_copy"] and + (self.path_dict["is_modified"] or self.path_dict["has_modified"] or + self.path_dict["is_conflicted"] or self.path_dict["has_conflicted"])): + return True + return False + + def diff_previous_revision(self, data=None): + if (self.path_dict["is_svn"] and + self.path_dict["length"] == 1 and + self.path_dict["is_in_a_or_a_working_copy"]): + return True + return False + + def compare_tool(self, data=None): + if (self.path_dict["length"] == 1 and + self.path_dict["is_in_a_or_a_working_copy"] and + (self.path_dict["is_modified"] or self.path_dict["has_modified"] or + self.path_dict["is_conflicted"] or self.path_dict["has_conflicted"])): + return True + return False + + def compare_tool_previous_revision(self, data=None): + if (self.path_dict["is_svn"] and + self.path_dict["length"] == 1 and + self.path_dict["is_in_a_or_a_working_copy"]): + return True + return False + + def show_changes(self, data=None): + return (self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"] and + self.path_dict["length"] in (1,2)) + + def show_log(self, data=None): + return (self.path_dict["length"] == 1 and + self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"] and + not self.path_dict["is_added"]) + + def add(self, data=None): + if not self.path_dict["is_svn"]: + return False + + if (self.path_dict["is_dir"] and + self.path_dict["is_in_a_or_a_working_copy"]): + return True + elif (not self.path_dict["is_dir"] and + self.path_dict["is_in_a_or_a_working_copy"] and + not self.path_dict["is_versioned"]): + return True + return False + + def check_for_modifications(self, data=None): + return (self.path_dict["is_working_copy"] or + self.path_dict["is_versioned"]) + + def rename(self, data=None): + return (self.path_dict["length"] == 1 and + self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"]) + + def delete(self, data=None): + return (self.path_dict["exists"] or self.path_dict["is_versioned"]) and \ + not self.path_dict["is_deleted"] + + def revert(self, data=None): + if self.path_dict["is_in_a_or_a_working_copy"]: + if (self.path_dict["is_added"] or + self.path_dict["is_modified"] or + self.path_dict["is_deleted"]): + return True + else: + if (self.path_dict["is_dir"] and + (self.path_dict["has_added"] or + self.path_dict["has_modified"] or + self.path_dict["has_deleted"] or + self.path_dict["has_missing"])): + return True + return False + + def annotate(self, data=None): + return (self.path_dict["length"] == 1 and + not self.path_dict["is_dir"] and + self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"] and + not self.path_dict["is_added"]) + + def properties(self, data=None): + return (self.path_dict["length"] == 1 and + self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"]) + + def create_patch(self, data=None): + if self.path_dict["is_in_a_or_a_working_copy"]: + if (self.path_dict["is_added"] or + self.path_dict["is_modified"] or + self.path_dict["is_deleted"] or + not self.path_dict["is_versioned"]): + return True + elif (self.path_dict["is_dir"] and + (self.path_dict["has_added"] or + self.path_dict["has_modified"] or + self.path_dict["has_deleted"] or + self.path_dict["has_unversioned"] or + self.path_dict["has_missing"])): + return True + return False + + def apply_patch(self, data=None): + if self.path_dict["is_in_a_or_a_working_copy"]: + return True + return False + + def add_to_ignore_list(self, data=None): + return (self.path_dict["is_in_a_or_a_working_copy"] and + not self.path_dict["is_versioned"]) + + def ignore_by_filename(self, *args): + return (self.path_dict["is_in_a_or_a_working_copy"] and + not self.path_dict["is_versioned"]) + + def ignore_by_file_extension(self, *args): + return (self.path_dict["is_in_a_or_a_working_copy"] and + not self.path_dict["is_versioned"]) + + def refresh_status(self, data=None): + return True + + def get_lock(self, data=None): + return self.path_dict["is_versioned"] + + def branch_tag(self, data=None): + return self.path_dict["is_versioned"] + + def relocate(self, data=None): + return self.path_dict["is_versioned"] + + def switch(self, data=None): + return self.path_dict["is_versioned"] + + def merge(self, data=None): + return self.path_dict["is_versioned"] + + def _import(self, data=None): + return (self.path_dict["length"] == 1 and + not self.path_dict["is_in_a_or_a_working_copy"]) + + def export(self, data=None): + return (self.path_dict["length"] == 1) + + def svn_export(self, data=None): + return self.export(data) + + def git_export(self, data=None): + return self.export(data) + + def update_to_revision(self, data=None): + return (self.path_dict["length"] == 1 and + self.path_dict["is_versioned"] and + self.path_dict["is_in_a_or_a_working_copy"]) + + def mark_resolved(self, data=None): + return (self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"] and + self.path_dict["is_conflicted"]) + + def create_repository(self, data=None): + return (self.path_dict["length"] == 1 and + not self.path_dict["is_in_a_or_a_working_copy"]) + + def unlock(self, data=None): + return (self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"] and + (self.path_dict["is_dir"] or self.path_dict["is_locked"])) + + def cleanup(self, data=None): + return self.path_dict["is_versioned"] + + def browse_to(self, data=None): + return self.path_dict["exists"] + + def _open(self, data=None): + return self.path_dict["is_file"] + + def restore(self, data=None): + return self.path_dict["has_missing"] + + def update(self, data=None): + return (self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"] and + not self.path_dict["is_added"]) + + def repo_browser(self, data=None): + return True + + def rabbitvcs(self, data=None): + return False + + def rabbitvcs_svn(self, data=None): + return (self.path_dict["is_svn"] or + not self.path_dict["is_in_a_or_a_working_copy"]) + + def rabbitvcs_git(self, data=None): + return (self.path_dict["is_git"] or + not self.path_dict["is_in_a_or_a_working_copy"]) + + def debug(self, data=None): + return settings.get("general", "show_debug") + + def separator(self, data=None): + return True + + def help(self, data=None): + return False + + def settings(self, data=None): + return True + + def about(self, data=None): + return True + + def bugs(self, data=None): + return True + + def initialize_repository(self, data=None): + return (self.path_dict["is_dir"] and + not self.path_dict["is_in_a_or_a_working_copy"]) + + def clone(self, data=None): + return (self.path_dict["is_dir"] and + not self.path_dict["is_in_a_or_a_working_copy"]) + + def push(self, data=None): + return (self.path_dict["is_git"]) + + def branches(self, data=None): + return (self.path_dict["is_git"]) + + def tags(self, data=None): + return (self.path_dict["is_git"]) + + def remotes(self, data=None): + return (self.path_dict["is_git"]) + + def clean(self, data=None): + return (self.path_dict["is_git"]) + + def reset(self, data=None): + return (self.path_dict["is_git"]) + + def stage(self, data=None): + if self.path_dict["is_git"]: + if (self.path_dict["is_dir"] and + self.path_dict["is_in_a_or_a_working_copy"]): + return True + elif (not self.path_dict["is_dir"] and + self.path_dict["is_in_a_or_a_working_copy"] and + not self.path_dict["is_versioned"]): + return True + return False + + def unstage(self, data=None): + if self.path_dict["is_git"]: + if (self.path_dict["is_dir"] and + self.path_dict["is_in_a_or_a_working_copy"]): + return True + elif (not self.path_dict["is_dir"] and + self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_added"]): + return True + return False + + def edit_conflicts(self, data=None): + return (self.path_dict["is_in_a_or_a_working_copy"] and + self.path_dict["is_versioned"] and + self.path_dict["is_conflicted"]) + +class GtkFilesContextMenuCallbacks(ContextMenuCallbacks): + """ + A callback class created for GtkFilesContextMenus. This class inherits from + the standard ContextMenuCallbacks class and overrides some methods. + """ + def __init__(self, caller, base_dir, vcs_client, paths=[]): + """ + @param caller: The calling object + @type caller: RabbitVCS extension + + @param base_dir: The curent working directory + @type base_dir: string + + @param vcs_client: The vcs client to be used + @type vcs_client: rabbitvcs.vcs.create_vcs_instance() + + @param paths: The selected paths + @type paths: list + + """ + ContextMenuCallbacks.__init__(self, caller, base_dir, vcs_client, paths) + + def _open(self, widget, data1=None, data2=None): + for path in self.paths: + rabbitvcs.util.helper.open_item(path) + + def add(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("add", ["-q"] + self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def revert(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("revert", ["-q"] + self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def mark_resolved(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("markresolved", ["-q"] + self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def browse_to(self, widget, data1=None, data2=None): + rabbitvcs.util.helper.browse_to_item(self.paths[0]) + + def delete(self, widget, data1=None, data2=None): + if len(self.paths) > 0: + proc = rabbitvcs.util.helper.launch_ui_window("delete", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def update(self, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("update", self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def unlock(self, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("unlock", ["-q"] + self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def show_log(self, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("log", self.paths) + self.caller.rescan_after_process_exit(proc, [self.paths[0]]) + + def stage(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("stage", ["-q"] + self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + + def unstage(self, widget, data1=None, data2=None): + proc = rabbitvcs.util.helper.launch_ui_window("unstage", ["-q"] + self.paths) + self.caller.rescan_after_process_exit(proc, self.paths) + +class GtkFilesContextMenuConditions(ContextMenuConditions): + """ + Sub-class for ContextMenuConditions for our dialogs. Allows us to override + some generic condition methods with condition logic more suitable + to the dialogs. + + """ + def __init__(self, vcs_client, paths=[]): + """ + @param vcs_client: The vcs client to be used + @type vcs_client: rabbitvcs.vcs.create_vcs_instance() + + @param paths: The selected paths + @type paths: list + + """ + self.vcs_client = vcs_client + self.paths = paths + self.statuses = {} + + self.generate_statuses(self.paths) + self.generate_path_dict(self.paths) + + def generate_statuses(self, paths): + self.statuses = {} + for path in paths: + if not path: + continue + + statuses_tmp = self.vcs_client.statuses(path, invalidate=True) + for status in statuses_tmp: + self.statuses[status.path] = status + + self.text_statuses = [self.statuses[key].simple_content_status() for key in self.statuses.keys()] + self.prop_statuses = [self.statuses[key].simple_metadata_status() for key in self.statuses.keys()] + +class GtkFilesContextMenu: + """ + Defines context menu items for a table with files + + """ + def __init__(self, caller, event, base_dir, paths=[], + conditions=None, callbacks=None): + """ + @param caller: The calling object + @type caller: RabbitVCS extension + + @param base_dir: The curent working directory + @type base_dir: string + + @param paths: The selected paths + @type paths: list + + @param conditions: The conditions class that determines menu item visibility + @kind conditions: ContextMenuConditions + + @param callbacks: The callbacks class that determines what actions are taken + @kind callbacks: ContextMenuCallbacks + + """ + self.caller = caller + self.event = event + self.paths = paths + self.base_dir = base_dir + self.vcs_client = create_vcs_instance() + + self.conditions = conditions + if self.conditions is None: + self.conditions = GtkFilesContextMenuConditions(self.vcs_client, paths) + + self.callbacks = callbacks + if self.callbacks is None: + self.callbacks = GtkFilesContextMenuCallbacks( + self.caller, + self.base_dir, + self.vcs_client, + paths + ) + + ignore_items = get_ignore_list_items(paths) + + # The first element of each tuple is a key that matches a + # ContextMenuItems item. The second element is either None when there + # is no submenu, or a recursive list of tuples for desired submenus. + self.structure = [ + (MenuDiff, None), + (MenuCompareTool, None), + (MenuUnlock, None), + (MenuShowLog, None), + (MenuOpen, None), + (MenuBrowseTo, None), + (MenuDelete, None), + (MenuRevert, None), + (MenuRestore, None), + (MenuEditConflicts, None), + (MenuMarkResolved, None), + (MenuCreatePatch, None), + (MenuAdd, None), + (MenuStage, None), + (MenuUnstage, None), + (MenuAddToIgnoreList, ignore_items) + ] + + def show(self): + if len(self.paths) == 0: + return + + context_menu = GtkContextMenu(self.structure, self.conditions, self.callbacks) + context_menu.show(self.event) + + def get_menu(self): + context_menu = GtkContextMenu(self.structure, self.conditions, self.callbacks) + return context_menu.menu + +class MainContextMenuCallbacks(ContextMenuCallbacks): + """ + The callback class used for the main context menu. This inherits from + and overrides the ContextMenuCallbacks class. + + """ + def __init__(self, caller, base_dir, vcs_client, paths=[]): + """ + @param caller: The calling object + @type caller: RabbitVCS extension + + @param base_dir: The curent working directory + @type base_dir: string + + @param vcs_client: The vcs client to be used + @type vcs_client: rabbitvcs.vcs.create_vcs_instance() + + @param paths: The selected paths + @type paths: list + + """ + ContextMenuCallbacks.__init__(self, caller, base_dir, vcs_client, paths) + +class MainContextMenuConditions(ContextMenuConditions): + """ + Sub-class for ContextMenuConditions used for file manager extensions. + Allows us to override some generic condition methods with condition logic + more suitable to the dialogs. + + """ + def __init__(self, vcs_client, paths=[]): + """ + @param vcs_client: The vcs client to be used + @type vcs_client: rabbitvcs.vcs.create_vcs_instance() + + @param paths: The selected paths + @type paths: list + + """ + + self.vcs_client = vcs_client + self.paths = paths + self.statuses = {} + + self.generate_statuses(paths) + self.generate_path_dict(paths) + + # FIXME: major bottleneck + def generate_statuses(self, paths): + self.statuses = {} + for path in paths: + if not path: + continue + + statuses_tmp = self.vcs_client.statuses(path) + for status in statuses_tmp: + self.statuses[status.path] = status + + self.text_statuses = [self.statuses[key].simple_content_status() for key in self.statuses.keys()] + self.prop_statuses = [self.statuses[key].simple_metadata_status() for key in self.statuses.keys()] + +class MainContextMenu: + """ + Defines and composes the main context menu. + + """ + def __init__(self, caller, base_dir, paths=[], + conditions=None, callbacks=None): + """ + @param caller: The calling object + @type caller: RabbitVCS extension + + @param base_dir: The curent working directory + @type base_dir: string + + @param paths: The selected paths + @type paths: list + + @param conditions: The conditions class that determines menu item visibility + @kind conditions: ContextMenuConditions + + @param callbacks: The callbacks class that determines what actions are taken + @kind callbacks: ContextMenuCallbacks + + """ + self.caller = caller + self.paths = paths + self.base_dir = base_dir + self.vcs_client = create_vcs_instance() + + self.conditions = conditions + if self.conditions is None: + self.conditions = MainContextMenuConditions(self.vcs_client, paths) + + self.callbacks = callbacks + if self.callbacks is None: + self.callbacks = MainContextMenuCallbacks( + self.caller, + self.base_dir, + self.vcs_client, + paths + ) + + ignore_items = get_ignore_list_items(paths) + + # The first element of each tuple is a key that matches a + # ContextMenuItems item. The second element is either None when there + # is no submenu, or a recursive list of tuples for desired submenus. + self.structure = [ + (MenuDebug, [ + (MenuBugs, None), + (MenuDebugShell, None), + (MenuRefreshStatus, None), + (MenuDebugRevert, None), + (MenuDebugInvalidate, None), + (MenuDebugAddEmblem, None) + ]), + (MenuUpdate, None), + (MenuCommit, None), + (MenuPush, None), + (MenuRabbitVCSSvn, [ + (MenuCheckout, None), + (MenuDiffMenu, [ + (MenuDiff, None), + (MenuDiffPrevRev, None), + (MenuDiffMultiple, None), + (MenuCompareTool, None), + (MenuCompareToolPrevRev, None), + (MenuCompareToolMultiple, None), + (MenuShowChanges, None), + ]), + (MenuShowLog, None), + (MenuRepoBrowser, None), + (MenuCheckForModifications, None), + (MenuSeparator, None), + (MenuAdd, None), + (MenuAddToIgnoreList, ignore_items), + (MenuSeparator, None), + (MenuUpdateToRevision, None), + (MenuRename, None), + (MenuDelete, None), + (MenuRevert, None), + (MenuEditConflicts, None), + (MenuMarkResolved, None), + (MenuRelocate, None), + (MenuGetLock, None), + (MenuUnlock, None), + (MenuCleanup, None), + (MenuSeparator, None), + (MenuSVNExport, None), + (MenuCreateRepository, None), + (MenuImport, None), + (MenuSeparator, None), + (MenuBranchTag, None), + (MenuSwitch, None), + (MenuMerge, None), + (MenuSeparator, None), + (MenuAnnotate, None), + (MenuSeparator, None), + (MenuCreatePatch, None), + (MenuApplyPatch, None), + (MenuProperties, None), + (MenuSeparator, None), + (MenuSettings, None), + (MenuAbout, None) + ]), + (MenuRabbitVCSGit, [ + (MenuClone, None), + (MenuInitializeRepository, None), + (MenuSeparator, None), + (MenuDiffMenu, [ + (MenuDiff, None), + (MenuDiffPrevRev, None), + (MenuDiffMultiple, None), + (MenuCompareTool, None), + (MenuCompareToolPrevRev, None), + (MenuCompareToolMultiple, None), + (MenuShowChanges, None), + ]), + (MenuShowLog, None), + (MenuStage, None), + (MenuUnstage, None), + (MenuAddToIgnoreList, ignore_items), + (MenuSeparator, None), + (MenuRename, None), + (MenuDelete, None), + (MenuRevert, None), + (MenuClean, None), + (MenuReset, None), + (MenuCheckout, None), + (MenuSeparator, None), + (MenuBranches, None), + (MenuTags, None), + (MenuRemotes, None), + (MenuSeparator, None), + (MenuGitExport, None), + (MenuMerge, None), + (MenuSeparator, None), + (MenuAnnotate, None), + (MenuSeparator, None), + (MenuCreatePatch, None), + (MenuApplyPatch, None), + (MenuSeparator, None), + (MenuSettings, None), + (MenuAbout, None) + ]) + ] + + def get_menu(self): + pass + +def TestMenuItemFunctions(): + """ + This is a test for developers to ensure that they've written all the + necessary conditions and callbacks (and haven't made any typos). + + What it does: + - build a list of all the subclasses of MenuItem + - build lists of the methods in ContextMenuConditions/ContextMenuCallbacks + - checks to see whether all the MenuItems conditions and callbacks have + been assigned - if not, a message is printed + """ + + # These are some simple tests: + import inspect + import types + + import contextmenuitems + + menu_item_subclasses = [] + + # Let's create a list of all MenuItem subclasses + for name in dir(contextmenuitems): + entity = getattr(contextmenuitems, name) + if type(entity) == types.ClassType: + mro = inspect.getmro(entity) + if (entity is not contextmenuitems.MenuItem and + contextmenuitems.MenuItem in mro): + menu_item_subclasses.append(entity) + + condition_functions = [] + + # Now let's create a list of all of the functions in our conditions class + for name in dir(ContextMenuConditions): + entity = getattr(ContextMenuConditions, name) + if type(entity) == types.UnboundMethodType and not name.startswith("__"): + condition_functions.append(entity) + + callback_functions = [] + + # ...and in our callbacks class + for name in dir(ContextMenuCallbacks): + entity = getattr(ContextMenuCallbacks, name) + if type(entity) == types.UnboundMethodType and not name.startswith("__"): + condition_functions.append(entity) + + for cls in menu_item_subclasses: + item = cls(ContextMenuConditions(), ContextMenuCallbacks(None, None, None, None)) + if not item.found_condition: + print "Did not find condition function in ContextMenuConditions " \ + "for %s (type: %s)" % (item.identifier, cls) + if not item.callback: + print "Did not find callback function in ContextMenuCallbacks " \ + "for %s (type: %s)" % (item.identifier, cls) + + +if __name__ == "__main__": + TestMenuItemFunctions() diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/decorators.py rabbitvcs-0.15.0.5/rabbitvcs/util/decorators.py --- rabbitvcs-0.13.1/rabbitvcs/util/decorators.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/decorators.py 2011-05-24 13:07:18.000000000 +0000 @@ -0,0 +1,160 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +""" + +Simple decorators (usable in Python >= 2.4). + +Decorators should be named as verbs (present or paste tense). + +See: + + - https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker/linkcheck/decorators.py + - http://wiki.python.org/moin/PythonDecoratorLibrary + +""" + +import time +import warnings +import threading + +from rabbitvcs.util.log import Log +log = Log("rabbitvcs.util.decorators") + +def update_func_meta(fake_func, real_func): + """ + Set meta information (eg. __doc__) of fake function to that of the real + function. + + @rtype: function + @return Fake function with metadata of the real function. + """ + + fake_func.__module__ = real_func.__module__ + fake_func.__name__ = real_func.__name__ + fake_func.__doc__ = real_func.__doc__ + fake_func.__dict__.update(real_func.__dict__) + + return fake_func + +def deprecated(func): + """ + A decorator which can be used to mark functions as deprecated. + It emits a warning when the function is called. + + @type func: function + @param func: The function to be designated as deprecated. + """ + + def newfunc(*args, **kwargs): + """ + Print deprecated warning and execute original function. + """ + warnings.warn("Call to deprecated function %s." % func.__name__, + category=DeprecationWarning) + return func(*args, **kwargs) + + return update_func_meta(newfunc, func) + +def timeit(func): + """ + This is a decorator which times a function and prints the time it took in + milliseconds to stdout. + + Based on the timeit function from LinkChecker. + + @type func: function + @param func: The function to be timed. + + """ + + def newfunc(*args, **kwargs): + """Execute function and print execution time.""" + start_time = time.time() + result = func(*args, **kwargs) + duration = (time.time() - start_time) * 1000.0 + log.info("%s() took %0.4f milliseconds" % (func.__name__, duration)) + return result + + return update_func_meta(newfunc, func) + +def disable(func): + """ + Disable a function. + + @type func: function + @param func: The function to be disabled. + + """ + + def newfunc(*args, **kwargs): + return + + return update_func_meta(newfunc, func) + +def gtk_unsafe(func): + """ + Used to wrap a function that makes calls to GTK from a thread in + gtk.gdk.threads_enter() and gtk.gdk.threads_leave(). + + """ + + import gtk + + def newfunc(*args, **kwargs): + gtk.gdk.threads_enter() + result = func(*args, **kwargs) + gtk.gdk.threads_leave() + return result + + return update_func_meta(newfunc, func) + +def debug_calls(caller_log, show_caller=False): + """ + Given a log to write messages to, wrap a function and log its invocation + and return. Use like: + + @debug_calls(my_modules_log) + def actual_function(...): + ... + + Warning: do not use with DBUS decorated methods, as this will play havoc + with introspection. + """ + + # We need a function within a function to be able to use the log argument. + def real_debug(func): + + def newfunc(*args, **kwargs): + caller_log.debug("Calling: %s (%s)" % + (func.__name__, + threading.currentThread().getName())) + + result = func(*args, **kwargs) + caller_log.debug("Returned: %s (%s)" % + (func.__name__, + threading.currentThread().getName())) + return result + + return update_func_meta(newfunc, func) + + return real_debug diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/helper.py rabbitvcs-0.15.0.5/rabbitvcs/util/helper.py --- rabbitvcs-0.13.1/rabbitvcs/util/helper.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/helper.py 2011-11-04 16:30:40.000000000 +0000 @@ -0,0 +1,960 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +""" + +All sorts of helper functions. + +""" + +from collections import deque +import locale +import os +import os.path +import sys +import subprocess +import re +import datetime +import time +import shutil +import hashlib + +import urllib +import urlparse + +try: + from gi.repository import GObject as gobject +except ImportError: + import gobject + +import rabbitvcs.util.settings + +from rabbitvcs.util.log import Log +log = Log("rabbitvcs.util.helper") + +from rabbitvcs import gettext +ngettext = gettext.ngettext + +DATETIME_FORMAT = "%Y-%m-%d %H:%M" # for log files +LOCAL_DATETIME_FORMAT = locale.nl_langinfo(locale.D_T_FMT) # for UIs + +DT_FORMAT_THISWEEK = "%a %I:%M%p" +DT_FORMAT_THISYEAR = "%b %d %Y" +DT_FORMAT_ALL = "%b %d %Y" + +LINE_BREAK_CHAR = u'\u23CE' + +from rabbitvcs import gettext +_ = gettext.gettext + +def get_tmp_path(filename): + day = datetime.datetime.now().day + m = hashlib.md5(str(day)).hexdigest()[0:10] + + tmpdir = "/tmp/rabbitvcs-%s" %m + if not os.path.isdir(tmpdir): + os.mkdir(tmpdir) + + return "%s/%s" % (tmpdir, filename) + +def process_memory(pid): + # ps -p 5205 -w -w -o rss --no-headers + psproc = subprocess.Popen( + ["ps", + "-p", str(pid), + "-w", "-w", # Extra-wide format + "-o", "size", # "Size" is probably the best all round + # memory measure. + "--no-headers"], + stdout=subprocess.PIPE) + + (output, stdin) = psproc.communicate() + + mem_in_kb = 0 + + try: + mem_in_kb = int(output) + except ValueError: + pass + + # log.debug("Memory for %i: %i" % (pid, mem_in_kb)) + + return mem_in_kb + +def format_long_text(text, cols=None): + """ Nicely formats text containing linebreaks to display in a single line + by replacing newlines with U+23CE. If the param "cols" is given, the text + beyond cols is replaced by "...". + """ + text = text.strip().replace(u"\n", LINE_BREAK_CHAR) + if cols and len(text) > cols: + text = u"%s..." % text[0:cols] + + return text + +def format_datetime(dt, format=None): + if format: + return dt.strftime(format).decode(locale.getpreferredencoding(False)) + + now = datetime.datetime.now() + delta = now - dt + + returner = "" + if delta.days == 0: + if delta.seconds < 60: + returner = _("just now") + elif delta.seconds >= 60 and delta.seconds < 600: + returner = _("%d minute(s) ago") % (delta.seconds/60) + elif delta.seconds >= 600 and delta.seconds < 43200: + returner = dt.strftime("%I:%M%P") + else: + returner = dt.strftime(DT_FORMAT_THISWEEK) + elif delta.days > 0 and delta.days < 7: + returner = dt.strftime(DT_FORMAT_THISWEEK) + elif delta.days >= 7 and delta.days < 365: + returner = dt.strftime(DT_FORMAT_THISYEAR) + else: + returner = dt.strftime(DT_FORMAT_ALL) + + return returner.decode(locale.getpreferredencoding(False)) + +def in_rich_compare(item, list): + """ Tests whether the item is in the given list. This is mainly to work + around the rich-compare bug in pysvn. This is not identical to the "in" + operator when used for substring testing. + """ + + in_list = False + + if list is not None: + for thing in list: + try: + in_list = item == thing + except AttributeError, e: + pass + + return in_list + +# FIXME: this function is duplicated in settings.py +def get_home_folder(): + """ + Returns the location of the hidden folder we use in the home dir. + This is used for storing things like previous commit messages and + peviously used repositories. + + @rtype: string + @return: The location of our main user storage folder. + + """ + + # Make sure we adher to the freedesktop.org XDG Base Directory + # Specifications. $XDG_CONFIG_HOME if set, by default ~/.config + xdg_config_home = os.environ.get( + "XDG_CONFIG_HOME", + os.path.join(os.path.expanduser("~"), ".config") + ) + config_home = os.path.join(xdg_config_home, "rabbitvcs") + + # Make sure the directories are there + if not os.path.isdir(config_home): + # FIXME: what if somebody places a file in there? + os.makedirs(config_home, 0700) + + return config_home + +def get_user_path(): + """ + Returns the location of the user's home directory. + /home/$USER + + @rtype: string + @return: The location of the user's home directory. + + """ + + return os.path.abspath(os.path.expanduser("~")) + +def get_repository_paths_path(): + """ + Returns a valid URI for the repository paths file + + @rtype: string + @return: The location of the repository paths file. + + """ + return os.path.join(get_home_folder(), "repos_paths") + +def get_repository_paths(): + """ + Gets all previous repository paths stored in the user's home folder + + @rtype: list + @return: A list of previously used repository paths. + + """ + + returner = [] + paths_file = get_repository_paths_path() + if os.path.exists(paths_file): + returner = [x.strip() for x in open(paths_file, "r").readlines()] + + return returner + +def get_previous_messages_path(): + """ + Returns a valid URI for the previous messages file + + @rtype: string + @return: The location of the previous messages file. + + """ + + return os.path.join(get_home_folder(), "previous_log_messages") + +def get_previous_messages(): + """ + Gets all previous messages stored in the user's home folder + + @rtype: list + @return: A list of previous used messages. + + """ + + path = get_previous_messages_path() + if not os.path.exists(path): + return + + lines = open(path, "r").readlines() + + cur_entry = "" + returner = [] + date = None + msg = "" + regex = re.compile(r"-- ([\d\-]+ [\d\:]+) --") + for line in lines: + m = regex.match(line) + if m: + cur_entry = m.groups()[0] + if date: + returner.append((date, msg.rstrip())) + msg = "" + date = cur_entry + else: + msg += line + + if date and msg: + returner.append((date, msg.rstrip())) + + returner.reverse() + + return returner + +def encode_revisions(revision_array): + """ + Takes a list of integer revision numbers and converts to a TortoiseSVN-like + format. This means we have to determine what numbers are consecutives and + collapse them into a single element (see doctest below for an example). + + @type revision_array: list of integers + @param revision_array: A list of revision numbers. + + @rtype: string + @return A string of revision numbers in TortoiseSVN-like format. + + >>> encode_revisions([4,5,7,9,10,11,12]) + '4-5,7,9-12' + + >>> encode_revisions([]) + '' + + >>> encode_revisions([1]) + '1' + """ + + # Let's get a couple of cases out of the way + if len(revision_array) == 0: + return "" + + if len(revision_array) == 1: + return str(revision_array[0]) + + # Instead of repeating a set of statements we'll just define them as an + # inner function. + def append(start, last, list): + if start == last: + result = "%s" % start + else: + result = "%s-%s" % (start, last) + + list.append(result) + + # We need a couple of variables outside of the loop + start = revision_array[0] + last = revision_array[0] + current_position = 0 + returner = [] + + while True: + if current_position + 1 >= len(revision_array): + append(start, last, returner) + break; + + current = revision_array[current_position] + next = revision_array[current_position + 1] + + if not current + 1 == next: + append(start, last, returner) + start = next + last = next + + last = next + current_position += 1 + + return ",".join(returner) + +def decode_revisions(string, head): + """ + Takes a TortoiseSVN-like revision string and returns a list of integers. + EX. 4-5,7,9-12 -> [4,5,7,9,10,11,12] + + TODO: This function is a first draft. It may not be production-worthy. + """ + returner = [] + arr = string.split(",") + for el in arr: + if el.find("-") != -1: + subarr = el.split("-") + if subarr[1] == 'HEAD': + subarr[1] = head + for subel in range(int(subarr[0]), int(subarr[1])+1): + returner.append(subel) + else: + returner.append(int(el)) + + return returner + +def get_diff_tool(): + """ + Gets the path to the diff_tool, and whether or not to swap lhs/rhs. + + @rtype: dictionary + @return: A dictionary with the diff tool path and swap boolean value. + """ + + sm = rabbitvcs.util.settings.SettingsManager() + diff_tool = sm.get("external", "diff_tool") + diff_tool_swap = sm.get("external", "diff_tool_swap") + + return { + "path": diff_tool, + "swap": diff_tool_swap + } + +def launch_diff_tool(path1, path2=None): + """ + Launches the diff tool of choice. + + 1. Generate a standard diff between the path and the latest revision. + 2. Write the diff text to a tmp file + 3. Copy the given file (path) to the tmp directory + 4. Do a reverse patch to get a version of the file that is in the repo. + 5. Now you have two files and you can send them to the diff tool. + + @type paths: list + @param paths: Paths to the given files + + """ + + diff = get_diff_tool() + + if diff["path"] == "": + return + + if not os.path.exists(diff["path"]): + return + + # If path2 is set, that means we are comparing one file/folder to another + if path2 is not None: + (lhs, rhs) = (path1, path2) + else: + patch = os.popen("svn diff --diff-cmd 'diff' '%s'" % path1).read() + + tmp_file = get_tmp_path("tmp.patch") + open(tmp_file, "w").write(patch) + + tmp_path = get_tmp_path(os.path.split(path1)[-1]) + if os.path.isfile(path1): + shutil.copy(path1, tmp_path) + elif os.path.isdir(path1): + shutil.copytree(path1, tmp_path) + else: + return + + os.popen( + "patch --reverse '%s' < %s" % (tmp_path, tmp_file) + ) + (lhs, rhs) = (tmp_path, path1) + + if diff["swap"]: + (lhs, rhs) = (rhs, lhs) + + os.spawnl( + os.P_NOWAIT, + diff["path"], + diff["path"], + lhs, + rhs + ) + +def launch_merge_tool(path1, path2=""): + diff = get_diff_tool() + + if diff["path"] == "": + return + + if not os.path.exists(diff["path"]): + return + + os.popen("%s %s %s" % (diff["path"], path1, path2)) + +def get_file_extension(path): + """ + Wrapper that retrieves a file path's extension. + + @type path: string + @param path: A filename or path. + + @rtype: string + @return: A file extension. + + """ + return os.path.splitext(path)[1] + +def open_item(path): + """ + Use GNOME default opener to handle file opening. + + @type path: string + @param path: A file path. + + """ + + if path == "" or path is None: + return + + subprocess.Popen(["gnome-open", os.path.abspath(path)]) + +def browse_to_item(path): + """ + Browse to the specified path in the file manager + + @type path: string + @param path: A file path. + + """ + + subprocess.Popen([ + "nautilus", "--no-desktop", "--browser", + os.path.dirname(os.path.abspath(path)) + ]) + +def delete_item(path): + """ + Send an item to the trash. + + @type path: string + @param path: A file path. + """ + + abspath = os.path.abspath(path) + permanent_delete = False + try: + # If the gvfs-trash program is not found, an OSError exception will + # be thrown, and rm will be used instead + retcode = subprocess.call(["gvfs-trash", abspath]) + if retcode: + permanent_delete = True + except OSError: + permanent_delete = True + + if permanent_delete: + if os.path.isdir(abspath): + shutil.rmtree(abspath, True) + else: + os.remove(abspath) + +def save_log_message(message): + """ + Saves a log message to the user's home folder for later usage + + @type message: string + @param message: A log message. + + """ + + messages = [] + path = get_previous_messages_path() + if os.path.exists(path): + limit = get_log_messages_limit() + messages = get_previous_messages() + + # If the current message already exists, delete the old one + # The new one will take it's place at the top + tmp = [] + for i, m in enumerate(messages): + if message != m[1]: + tmp.append(m) + + messages = tmp + + # Don't allow the number of messages to pile up past the limit + while len(messages) > limit: + messages.pop() + + t = time.strftime(DATETIME_FORMAT) + messages.insert(0, (t, message)) + + f = open(get_previous_messages_path(), "w") + s = "" + for m in messages: + s = """\ +-- %s -- +%s +%s +"""%(m[0], m[1], s) + + f.write(s.encode("utf-8")) + f.close() + +def save_repository_path(path): + """ + Saves a repository path to the user's home folder for later usage + If the given path has already been saved, remove the old one from the list + and append the new one to the end. + + @type path: string + @param path: A repository path. + + """ + + paths = get_repository_paths() + if path in paths: + paths.pop(paths.index(path)) + paths.insert(0, path) + + limit = get_repository_paths_limit() + while len(paths) > limit: + paths.pop() + + f = open(get_repository_paths_path(), "w") + f.write("\n".join(paths).encode("utf-8")) + f.close() + +def launch_ui_window(filename, args=[], block=False): + """ + Launches a UI window in a new process, so that we don't have to worry about + nautilus and threading. + + @type filename: string + @param filename: The filename of the window, without the extension + + @type args: list + @param args: A list of arguments to be passed to the window. + + @rtype: integer + @return: The pid of the process (if launched) + """ + + # Hackish. Get's the helper module's path, then assumes it is in + # the lib folder. Removes the /lib part of the path. + basedir, head = os.path.split( + os.path.dirname( + os.path.realpath(__file__))) + + env = os.environ + if "NAUTILUS_PYTHON_REQUIRE_GTK3" in env: + del env["NAUTILUS_PYTHON_REQUIRE_GTK3"] + + if not head == "util": + log.warning("Helper module (%s) not in \"util\" dir" % __file__) + + # Puts the whole path together. + # path = "%s/ui/%s.py" % (basedir, filename) + path = os.path.join(basedir, "ui", filename + ".py") + + if os.path.exists(path): + proc = subprocess.Popen([sys.executable, path] + args, env=env) + + if block: + proc.wait() + + return proc + else: + return None + +def get_log_messages_limit(): + sm = rabbitvcs.util.settings.SettingsManager() + return int(sm.get("cache", "number_messages")) + +def get_repository_paths_limit(): + sm = rabbitvcs.util.settings.SettingsManager() + return int(sm.get("cache", "number_repositories")) + +def get_common_directory(paths): + common = os.path.commonprefix(abspaths(paths)) + + while not os.path.exists(common) or os.path.isfile(common): + common = os.path.split(common)[0] + + if common == "": + break + + return common + +def abspaths(paths): + index = 0 + for path in paths: + paths[index] = os.path.realpath(os.path.abspath(path)) + index += 1 + + return paths + +def pretty_timedelta(time1, time2, resolution=None): + """ + Calculate time delta between two C{datetime} objects. + (the result is somewhat imprecise, only use for prettyprinting). + + Was originally based on the function pretty_timedelta from: + http://trac.edgewall.org/browser/trunk/trac/util/datefmt.py + """ + + if time1 > time2: + time2, time1 = time1, time2 + diff = time2 - time1 + age_s = int(diff.days * 86400 + diff.seconds) + if resolution and age_s < resolution: + return "" + + # I do not see a way to make this less repetitive - to make the + # strings fully translatable (i.e. also for languages that have more + # or less than two plural forms) we have to state all the strings + # explicitely within an ngettext call + if age_s <= 60 * 1.9: + return ngettext("%i second", "%i seconds",age_s) % age_s + elif age_s <= 3600 * 1.9: + r = age_s / 60 + return ngettext("%i minute", "%i minutes",r) % r + elif age_s <= 3600 * 24 * 1.9: + r = age_s / 3600 + return ngettext("%i hour", "%i hours",r) % r + elif age_s <= 3600 * 24 * 7 * 1.9: + r = age_s / (3600 * 24) + return ngettext("%i day", "%i days",r) % r + elif age_s <= 3600 * 24 * 30 * 1.9: + r = age_s / (3600 * 24 * 7) + return ngettext("%i week", "%i weeks",r) % r + elif age_s <= 3600 * 24 * 365 * 1.9: + r = age_s / (3600 * 24 * 30) + return ngettext("%i month", "%i months",r) % r + else: + r = age_s / (3600 * 24 * 365) + return ngettext("%i year", "%i years",r) % r + +def _commonpath(l1, l2, common=[]): + """ + Helper method for the get_relative_path method + """ + if len(l1) < 1: return (common, l1, l2) + if len(l2) < 1: return (common, l1, l2) + if l1[0] != l2[0]: return (common, l1, l2) + return _commonpath(l1[1:], l2[1:], common+[l1[0]]) + +def get_relative_path(from_path, to_path): + """ + Method that returns the relative path between the specified paths + """ + + nice_path1 = from_path.rstrip(os.path.sep).split(os.path.sep) + nice_path2 = to_path.rstrip(os.path.sep).split(os.path.sep) + + (common,l1,l2) = _commonpath(nice_path1, nice_path2) + + p = [] + if len(l1) > 0: + p = ['..'] * len(l1) + p = p + l2 + + return os.sep.join(p) + +def launch_repo_browser(uri): + sm = rabbitvcs.util.settings.SettingsManager() + repo_browser = sm.get("external", "repo_browser") + + if repo_browser is not None: + subprocess.Popen([ + repo_browser, + uri + ]) + +def launch_url_in_webbrowser(url): + import webbrowser + webbrowser.open(url) + +def parse_path_revision_string(pathrev): + index = pathrev.rfind("@") + if index == -1: + return (pathrev,None) + else: + return (pathrev[0:index], pathrev[index+1:]) + +def create_path_revision_string(path, revision=None): + if revision: + return path + "@" + str(revision) + else: + return path + +def url_join(path, *args): + return "/".join([path.rstrip("/")] + list(args)) + +def quote_url(url_text): + (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(url_text) + # netloc_quoted = urllib.quote(netloc) + path_quoted = urllib.quote(path) + params_quoted = urllib.quote(query) + query_quoted = urllib.quote_plus(query) + fragment_quoted = urllib.quote(fragment) + + url_quoted = urlparse.urlunparse( + (scheme, + netloc, + path_quoted, + params_quoted, + query_quoted, + fragment_quoted)) + + return url_quoted + +def unquote_url(url_text): + (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(url_text) + # netloc_unquoted = urllib.unquote(netloc) + path_unquoted = urllib.unquote(path) + params_unquoted = urllib.unquote(query) + query_unquoted = urllib.unquote_plus(query) + fragment_unquoted = urllib.unquote(fragment) + + url_unquoted = urlparse.urlunparse( + (scheme, + netloc, + path_unquoted, + params_unquoted, + query_unquoted, + fragment_unquoted)) + + return url_unquoted + + +def pretty_filesize(bytes): + if bytes >= 1073741824: + return str(bytes / 1073741824) + ' GB' + elif bytes >= 1048576: + return str(bytes / 1048576) + ' MB' + elif bytes >= 1024: + return str(bytes / 1024) + ' KB' + elif bytes < 1024: + return str(bytes) + ' bytes' + +def get_node_kind(path): + if os.path.exists(path): + if os.path.isfile(path): + return "file" + else: + return "dir" + + return "none" + +def walk_tree_depth_first(tree, show_levels=False, + preprocess=None, filter=None, start=None): + """ + A non-recursive generator function that walks through a tree (and all + children) yielding results. + + The tree should be of the form: + [(NodeOne, None), + (NodeTwo, + [(Node2A, None), + (Node2B, None), + (Node2C, + [(Node2C1, None), etc] + ] + (NodeThree, None), + etc...] + + If show_levels is True, the values returned are (level, value) where level + is zero for the top level items in the tree. Otherwise, just "value" is + returned. + + If a callable "preprocess" is supplied, it is applied BEFORE the filter, + as each element is encountered. + + If a callable "filter" is supplied, it is applied to whatever "preprocess" + returned, and if it returns False for an item, the item and its children + will be skipped. + + If "start" is given, the walk will be applied only to that node and its + children. No preprocessing or filtering will be applied to other elements. + """ + annotated_tree = [(0, element) for element in tree] + + to_process = deque(annotated_tree) + + # If we're not given a starting point, the top is the start + found_starting_point = not start + + while to_process: + (level, (node, children)) = to_process.popleft() + + if not found_starting_point and (node == start): + # If we're given a starting point and we've found it, clear the list + # and start from here + found_starting_point = True + level = 0 + to_process.clear() + + # This should NOT be an else case, since we may have just set this flag + # to "True" above. + if found_starting_point: + if preprocess: + value = preprocess(node) + else: + value = node + + if filter and not filter(value): + continue + + if show_levels: + yield (level, value) + else: + yield value + + if children: + annotated_children = [(level+1, child) for child in children] + annotated_children.reverse() + to_process.extendleft(annotated_children) + +def urlize(path): + if path.startswith("/"): + return "file://%s" % path + return path + +def parse_patch_output(patch_file, base_dir, strip=0): + """ Runs the GNU 'patch' utility, parsing the output. This is actually a + generator which yields values as each section of the patch is applied. + + @param patch_file: the location of the patch file + @type patch_file: string + + @param base_dir: the directory in which to apply the patch + @type base_dir: string + + @return: a generator yielding tuples (filename, success, reject_file). + "filename" is never None, and should always exist. "success" is + True iff the patch executed without any error messages. + "reject_file" may be None, but if it exists is the location of + rejected "hunks". It's like a bad reality TV dating show. + """ + + PATCHING_RE = re.compile(r"patching file (.*)") + REJECT_RE = re.compile(r".*saving rejects to file (.*)") + + # PATCH flags... + # -N: always assume forward diff + # -t: batch mode: + # skip patches whose headers do not contain file + # names (the same as -f); skip patches for which + # the file has the wrong version for the Prereq: + # line in the patch; and assume that patches are + # reversed if they look like they are. + env = os.environ.copy().update({"LC_ALL" : "C"}) + p = "-p%s" % strip + patch_proc = subprocess.Popen(["patch", "-N", "-t", p, "-i", str(patch_file), "--directory", base_dir], + stdout = subprocess.PIPE, + stderr = subprocess.PIPE, + env = env) + + # Intialise things... + line = patch_proc.stdout.readline() + patch_match = PATCHING_RE.match(line) + + current_file = None + if patch_match: + current_file = patch_match.group(1) + elif line: # and not patch_match + # There was output, but unexpected. Almost certainly an error of some + # sort. + patch_proc.wait() + output = line + patch_proc.stdout.read() + raise rabbitvcs.vcs.ExternalUtilError("patch", output) + # Note the excluded case: empty line. This falls through, skips the loop + # and returns. + + any_errors = False + reject_file = None + + while current_file: + + line = patch_proc.stdout.readline() + while not line and patch_proc.poll() is None: + line = patch_proc.stdout.readline() + + # Does patch tell us we're starting a new file? + patch_match = PATCHING_RE.match(line) + + # Starting a new file => that's it for the last one, so return the value + # No line => End of patch output => ditto + if patch_match or not line: + + yield (current_file, not any_errors, reject_file) + + if not line: + # That's it from patch, so end the generator + break + + # Starting a new file... + current_file = patch_match.group(1) + any_errors = False + reject_file = None + + else: + # Doesn't matter why we're here, anything else means ERROR + + any_errors = True + + reject_match = REJECT_RE.match(line) + + if reject_match: + # Have current file, getting reject file info + reject_file = reject_match.group(1) + # else: we have an unknown error + + patch_proc.wait() # Don't leave process running... + return + diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/util/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/util/__init__.py 2009-07-07 14:04:18.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/__init__.py 2010-12-10 00:06:15.000000000 +0000 @@ -0,0 +1,142 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +from rabbitvcs.util.log import Log + +log = Log("rabbitvcs.util.__init__") + +class Function: + """ + Provides an interface to define and call a function. + + Usage: + f = Function(self.do_this, path) + f.run() + + """ + + def __init__(self, func, *args, **kwargs): + self.func = func + self.args = args + self.kwargs = kwargs + self.result = None + + def start(self): + self.result = self.func(*self.args, **self.kwargs) + + def call(self): + return self.func(*self.args, **self.kwargs) + + def set_args(self, *args, **kwargs): + self.args = args + self.kwargs = kwargs + + def get_result(self): + return self.result + +class FunctionQueue: + """ + Provides an interface to generate a queue of function calls. + + """ + + def __init__(self): + self.queue = [] + self.cancel = False + self._exception = None + self.position = 0 + + def cancel_queue(self): + self.cancel = True + + def append(self, func, *args, **kwargs): + """ + Append a Function object to the FunctionQueue + + @type func: def + @param func: A method call + + @type *args: list + @param *args: A list of arguments + + @type **kwargs: list + @param **kwargs: A list of keyword arguments + + """ + + self.queue.append(Function(func, *args, **kwargs)) + + def insert(self, position, func, *args, **kwargs): + """ + Insert a Function object into the FunctionQueue + + @type func: def + @param func: A method call + + @type *args: list + @param *args: A list of arguments + + @type **kwargs: list + @param **kwargs: A list of keyword arguments + + """ + + self.queue.insert(position, Function(func, *args, **kwargs)) + + def set_exception_callback(self, func): + self._exception = Function(func) + + def start(self): + """ + Runs through the queue and calls each function + + """ + + for func in self.queue: + if self.cancel == True: + return + + try: + func.start() + except Exception, e: + log.exception() + if self._exception: + self._exception.set_args(e) + self._exception.call() + break + + self.position += 1 + + def get_position(self): + return self.position + + def get_result(self, index): + """ + Retrieve the result of a single function call by specifying the order + in which the function was in the queue. + + @type index: int + @param index: The queue index + + """ + + return self.queue[index].get_result() diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/_locale.py rabbitvcs-0.15.0.5/rabbitvcs/util/_locale.py --- rabbitvcs-0.13.1/rabbitvcs/util/_locale.py 2010-03-27 08:45:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/_locale.py 2010-05-18 16:53:43.000000000 +0000 @@ -1,20 +1,21 @@ import locale import os -from rabbitvcs.lib.log import Log +from rabbitvcs.util.log import Log log = Log("rabbitvcs.util.locale") def initialize_locale(): try: + sane_default = locale.getdefaultlocale(['LANG', 'LANGUAGE']) # Just try to set the default locale for the user - locale.resetlocale(locale.LC_ALL) + locale.setlocale(locale.LC_ALL, sane_default) except locale.Error: # If the user's environment does not specify an encoding, Python will # pick a default which might not be available. It seems to pick # ISO8859-1 (latin1), but UTF8 is a better idea on GNU/Linux. log.warning("Could not set default locale (LANG: %s)" % os.environ.get("LANG")) - (loc, enc) = locale.getdefaultlocale() + (loc, enc) = sane_default # We should only try this if we have a region to set as well. if loc and enc != "UTF8": diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/log.py rabbitvcs-0.15.0.5/rabbitvcs/util/log.py --- rabbitvcs-0.13.1/rabbitvcs/util/log.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/log.py 2010-12-10 00:06:15.000000000 +0000 @@ -0,0 +1,330 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +""" +Provides a simple wrapper around the python logger. + +Right now there is the base Log class, and three specialized classes that +inherit from the Log class: ConsoleLog, FileLog, and DualLog. ConsoleLog logs +messages to the standard output (command line), FileLog outputs to a log file, +and DualLog outputs to both. + +The programmer does not need to think about the logger types because this will +be specified in the user's settings. So to set up your module to log do the +following: + +Usage: + from rabbitvcs.util.log import Log + + log = Log("my.module") + log.debug("a debug message") + +""" + +import os +from os.path import expanduser +import logging +import logging.handlers + +from rabbitvcs.util.settings import SettingsManager, get_home_folder + +LEVELS = { + "debug": logging.DEBUG, + "info": logging.INFO, + "warning": logging.WARNING, + "error": logging.ERROR, + "critical": logging.CRITICAL +} + +settings = SettingsManager() +DEFAULT_LEVEL = settings.get("logging", "level").lower() +DEFAULT_LOG_TYPE = settings.get("logging", "type") + +# The following merely sets the log type/level if it hasn't already been set +changed = False +if DEFAULT_LEVEL not in LEVELS: + DEFAULT_LEVEL = "debug" + settings.set("logging", "level", DEFAULT_LEVEL.title()) + changed = True + +if not DEFAULT_LOG_TYPE: + DEFAULT_LOG_TYPE = "Console" + settings.set("logging", "type", DEFAULT_LOG_TYPE) + changed = True + +if changed: + settings.write() + +LOG_PATH = os.path.join(get_home_folder(), "RabbitVCS.log") +if not os.path.exists(LOG_PATH): open(LOG_PATH, "a").close() +DEFAULT_FORMAT = "%(message)s" +FILE_FORMAT = "%(asctime)s %(levelname)s\t%(name)s\t%(message)s" +CONSOLE_FORMAT = "%(levelname)s\t%(name)s\t%(message)s" + +class BaseLog: + """ + Provides a wrapper around the logging module to simplify some logging tasks. + This base class should generally not be called. + + """ + + def __init__(self, logger="", level=DEFAULT_LEVEL): + self.logger = logging.getLogger(logger) + self.level = level + self.logger.setLevel(LEVELS[level]) + self.handler = None + + def set_level(self, level=DEFAULT_LEVEL): + """ + Set the mimimum level to be logged. + + @type level: string + @param level: The minimum level to log. (debug, info, warning, error, critical) + + """ + + self.level = level + self.logger.setLevel(LEVELS[level]) + + def debug(self, msg=""): + """ + Pass a debug level log message (Numeric value: 10) + + @type msg: string + @param msg: The message to pass + + """ + + self.logger.debug(msg) + + def info(self, msg=""): + """ + Pass an info level log message (Numeric value: 20) + + @type msg: string + @param msg: The message to pass + + """ + + self.logger.info(msg) + + def warning(self, msg=""): + """ + Pass a warning level log message (Numeric value: 30) + + @type msg: string + @param msg: The message to pass + + """ + + self.logger.warning(msg) + + def error(self, msg=""): + """ + Pass an error level log message (Numeric value: 40) + + @type msg: string + @param msg: The message to pass + + """ + + self.logger.error(msg) + + def critical(self, msg=""): + """ + Pass a critical level log message (Numeric value: 50) + + @type msg: string + @param msg: The message to pass + + """ + + self.logger.critical(msg) + + def exception(self, msg=""): + """ + Pass a exception level log message (Numeric value: 50) + + @type msg: string + @param msg: The message to pass + + """ + + self.logger.exception(msg) + + def exception_info(self, msg, exc_info): + """ + Pass an exception info tuple (as per sys.exc_info() format, (type, + value, traceback). + + @type exc_info: (type, value, traceback) + @param exc_info: exception info + """ + self.logger.debug(msg, exc_info=exc_info) + + def set_handler(self, handler, format=DEFAULT_FORMAT): + """ + Set how the logging module should handle log messages. + + @type handler: logging.Handler + @param handler: The class that handles log messages + + @type format: string + @param format: The formatting to be used when displaying messages + + """ + + self.handler = handler + self.handler.setLevel(LEVELS[self.level]) + self.handler.setFormatter(logging.Formatter(format)) + self.logger.addHandler(self.handler) + +class ConsoleLog(BaseLog): + """ + Inherits from BaseLog and provides a simple interface to log calls to the + command line/standard output. + + Usage: + clog = ConsoleLog("rabbitvcs.ui.commit") + clog.debug("This function needs refactoring") + clog.error("You just screwed the pooch!") + + """ + + def __init__(self, logger="", level=DEFAULT_LEVEL): + """ + @type logger: string + @param logger: A keyword describing the source of the log messages + + @type level: string + @param level: The minimum level to log. (debug, info, warning, error, critical) + + """ + + BaseLog.__init__(self, logger, level) + self.set_handler(logging.StreamHandler(), CONSOLE_FORMAT) + +class FileLog(BaseLog): + """ + Inherits from BaseLog and provides a simple interface to log calls to file + which is automatically rotated every day and keeps seven days worth of data. + + Usage: + flog = FileLog("rabbitvcs.ui.commit") + flog.debug("This function needs refactoring") + flog.error("You just screwed the pooch!") + + """ + + def __init__(self, logger="", level=DEFAULT_LEVEL): + """ + @type logger: string + @param logger: A keyword describing the source of the log messages + + @type level: string + @param level: The minimum level to log. (debug, info, warning, error, critical) + + """ + + BaseLog.__init__(self, logger, level) + self.set_handler( + logging.handlers.TimedRotatingFileHandler(LOG_PATH, "D", 1, 7, "utf-8"), + FILE_FORMAT + ) + +class DualLog(BaseLog): + """ + Inherits from BaseLog and provides a simple interface to log calls to both the + command line/standard output and a file which is automatically rotated every + day. + + Usage: + dlog = DualLog("rabbitvcs.ui.commit") + dlog.debug("This function needs refactoring") + dlog.error("You just screwed the pooch!") + + """ + + def __init__(self, logger="", level=DEFAULT_LEVEL): + """ + @type logger: string + @param logger: A keyword describing the source of the log messages + + @type level: string + @param level: The minimum level to log. (debug, info, warning, error, critical) + + """ + + BaseLog.__init__(self, logger, level) + self.set_handler( + logging.handlers.TimedRotatingFileHandler(LOG_PATH, "D", 1, 7, "utf-8"), + FILE_FORMAT + ) + self.set_handler(logging.StreamHandler(), CONSOLE_FORMAT) + +class NullHandler(logging.Handler): + """ + Handles log messages and doesn't do anything with them + + """ + + def emit(self, record): + pass + +class NullLog(BaseLog): + """ + If the user does not want to generate a log file, use the NullLog. It calls + the NullHandler class as its handler. + + """ + + def __init__(self, *args, **kwargs): + BaseLog.__init__(self, *args, **kwargs) + self.set_handler(NullHandler()) + +Log = NullLog +if DEFAULT_LOG_TYPE == "File": + Log = FileLog +elif DEFAULT_LOG_TYPE == "Console": + Log = ConsoleLog +elif DEFAULT_LOG_TYPE == "Both": + Log = DualLog + +def reload_log_settings(): + """ + Refreshes the settings manager and returns a new log instance + + """ + + settings = SettingsManager() + DEFAULT_LEVEL = settings.get("logging", "level").lower() + DEFAULT_LOG_TYPE = settings.get("logging", "type") + + Log = NullLog + if DEFAULT_LOG_TYPE == "File": + Log = FileLog + elif DEFAULT_LOG_TYPE == "Console": + Log = ConsoleLog + elif DEFAULT_LOG_TYPE == "Both": + Log = DualLog + + return Log diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/misctest.py rabbitvcs-0.15.0.5/rabbitvcs/util/misctest.py --- rabbitvcs-0.13.1/rabbitvcs/util/misctest.py 2010-03-27 08:45:59.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/misctest.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ -''' -Created on 31/10/2009 - -@author: jason -''' -import unittest -import os.path -import time -import shutil -import tempfile - -import pysvn - -import rabbitvcs -import rabbitvcs.services.statuscache -import rabbitvcs.util.vcs -import rabbitvcs.util._locale - -rabbitvcs.util._locale.initialize_locale() - -class SummarizeTest(unittest.TestCase): - - # FIXME: replace this with a suitable test repo. I recommend a local one, - # since it will be checked out and deleted for EVERY SINGLE TEST. - SVN_TEST_REPO = "svn+ssh://localhost/some/local/repo" - SVN_WC_NAME = "test_checkout" - TIMEOUT = 0.2 - - vcs_client = pysvn.Client() - status_cache = rabbitvcs.services.statuscheckerplus.StatusCheckerPlus() - - def setUp(self): - self.temp_dir = tempfile.mkdtemp(prefix=(rabbitvcs.TEMP_DIR_PREFIX)) - self.wc = os.path.join(self.temp_dir, self.SVN_WC_NAME) - self.vcs_client.checkout(self.SVN_TEST_REPO, self.wc) - - def tearDown(self): - if self.temp_dir: - shutil.rmtree(self.temp_dir) - - def get_actual_status(self): - statuses = None - while not statuses or statuses[self.wc]["text_status"] == "calculating": - statuses = self.status_cache.check_status(self.wc, recurse=False) - time.sleep(self.TIMEOUT) - return statuses - - def change_status(self, statuses, status_type, value, idx = 0): - # We're cheating here: instead of modifying the files in the WC, we're - # just changing the values in the dict. It's easier, but we still need - # the files to actually exist because the utility functions need to - # check whether they're dirs or not. - - subpaths = statuses.keys() - subpaths.remove(self.wc) - - self.failIf(len(subpaths) == 0, "No items in working copy!") - - testpath = subpaths[idx] - statuses[testpath][status_type] = value - return statuses - - def status_summary_change_test(self, status_type, value, result): - orig_st = self.get_actual_status() - statuses = self.change_status(orig_st, status_type, value) - summary = rabbitvcs.util.vcs.summarize_status(self.wc, statuses) - self.failUnless(summary == result) - - def status_summary_change_test_both(self, text_status, prop_status, result): - orig_st = self.get_actual_status() - statuses = self.change_status(orig_st, "text_status", text_status) - statuses = self.change_status(orig_st, "prop_status", prop_status, idx=1) - summary = rabbitvcs.util.vcs.summarize_status(self.wc, statuses) - self.failUnless(summary == result) - - def testSummaryClean(self): - statuses = self.get_actual_status() - summary = rabbitvcs.util.vcs.summarize_status(self.wc, statuses) - self.failUnless(summary == "normal") - - def testSummaryTextChangeAdded(self): - self.status_summary_change_test("text_status", "added", "modified") - - def testSummaryTextChangeConflicted(self): - self.status_summary_change_test("text_status", "conflicted", "conflicted") - - def testSummaryTextChangeObstructed(self): - self.status_summary_change_test("text_status", "obstructed", "obstructed") - - def testSummaryPropChange(self): - self.status_summary_change_test("prop_status", "modified", "modified") - - def testSummaryBothChange(self): - self.status_summary_change_test_both("modified", "modified", "modified") - - def testSummaryBothConflicted(self): - self.status_summary_change_test_both("conflicted", "modified", "conflicted") - - def testSummaryBothObstructed(self): - self.status_summary_change_test_both("obstructed", "modified", "obstructed") - -if __name__ == "__main__": - #import sys;sys.argv = ['', 'Test.testStatusSummary'] - unittest.main() \ No newline at end of file diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/settings.py rabbitvcs-0.15.0.5/rabbitvcs/util/settings.py --- rabbitvcs-0.13.1/rabbitvcs/util/settings.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/settings.py 2011-02-10 22:25:42.000000000 +0000 @@ -0,0 +1,307 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +""" + +Everything related retrieving and storing configuration keys. + +""" + +import os +from os.path import dirname + +import shutil +import configobj +import validate + +from rabbitvcs import package_prefix + +def get_home_folder(): + """ + Returns the location of the hidden folder we use in the home dir. + This is used for storing things like previous commit messages and + previously used repositories. + + FIXME: This is a copy of the helper module's function, because I can't + have a circular module reference (helper imports Settings right now). + + @rtype: string + @return: The location of our main user storage folder. + + """ + + # Make sure we adher to the freedesktop.org XDG Base Directory + # Specifications. $XDG_CONFIG_HOME if set, by default ~/.config + xdg_config_home = os.environ.get( + "XDG_CONFIG_HOME", + os.path.join(os.path.expanduser("~"), ".config") + ) + config_home = os.path.join(xdg_config_home, "rabbitvcs") + + # Make sure the directories are there + if not os.path.isdir(config_home): + # FIXME: what if somebody places a file in there? + os.makedirs(config_home, 0700) + + return config_home + +SETTINGS_FILE = "%s/settings.conf" % get_home_folder() + +def find_configspec(): + # Search the following paths for a configspec file + configspec_paths = [ + os.path.join(dirname(__file__), "configspec/configspec.ini"), + os.path.join(package_prefix(), "share/rabbitvcs/configspec.ini"), + "/usr/share/rabbitvcs/configspec.ini" + ] + + for path in configspec_paths: + if os.path.exists(path): + return path + + raise IOError("Cannot find a configspec.ini file") + +SETTINGS_SPEC = find_configspec() + +class SettingsManager: + """ + This class provides an shallow interface for the rest of the program to use + to interact with our configuration file. + + Usage:: + + Get settings: + sm = SettingsManager() + diff_tool = sm.get("external", "diff_tool") + + Set settings: + sm = SettingsManager() + sm.set("external", "diff_tool", "/usr/bin/meld") + sm.write() + """ + + def __init__(self): + + self.settings = configobj.ConfigObj( + infile=SETTINGS_FILE, + create_empty=True, + indent_type=" ", + configspec=SETTINGS_SPEC + ) + + self.validator = validate.Validator() + + valid = self.settings.validate(self.validator) + + # We cannot use "if not valid" here, since validate() returns a dict + # if validation fails! + # See: + # http://www.voidspace.org.uk/python/articles/configobj.shtml#validation + if valid is not True: + # What to do here? + # We could only get to this point if: + # 1. The user config file existed + # 2. It was invalid + # One option is to copy it to a different file and recreate it... + log.warning("User configuration not valid. Backing up and recreating.") + self.backup_and_rewrite_config() + + + def get(self, section=None, keyword=None): + """ + Get the settings for a section and/or keyword + If no arguments are given, it just returns all settings + + @type section: string + @param section: A settings section. + + @type keyword: string + @param keyword: A particular setting in a section. + + @rtype: dictionary or string + @return: Either a dictionary or string with setting(s). + + """ + + if section is None: + return self.settings + + if keyword is None: + return self.settings[section] + + returner = "" + try: + returner = self.settings[section][keyword] + except KeyError: + print "Error: section %s:%s doesn't exist" % (section, keyword) + + return returner + + def set(self, section, keyword, value=""): + """ + Set settings for a particular section and keyword + + @type section: string + @param section: A settings section. + + @type keyword: string + @param keyword: A particular setting in a section. + + @type value: string or dictionary + @param value: Setting value. + + """ + + if section not in self.settings: + self.settings[section] = {} + + self.settings[section][keyword] = value + + def set_comments(self, section, comments=[]): + """ + Set multi-line comments for a section + + @type section: string + @param section: A settings section. + + @type comments: list + @param comments: A list of strings. + + """ + + self.settings.comments[section] = comments + + def set_inline_comments(self, section, comments=""): + """ + Set inline comments for a section + + @type section: string + @param section: A settings section. + + @type comments: string + @param comments: A single line comment. + + """ + + self.settings.inline_comments[section] = comments + + def write(self): + """ + Write the settings and comments to the settings file + + """ + + self.settings.write() + + def clear(self): + """ + Clear the settings object so that all sections/keywords are gone + This function does not write-to-file. Only clears from memory. + + """ + self.settings = configobj.ConfigObj(indent_type=" ") + self.settings.filename = SETTINGS_FILE + # Maybe we should use self.settings.reset()? + + def use_default_settings(self): + """ + Specify a set of default settings and write to file. + Called when there is no settings.conf present. + + """ + + self.settings = configobj.ConfigObj( + DEFAULT_SETTINGS, + indent_type=" " + ) + self.settings.filename = SETTINGS_FILE + + def get_default(self, section, keyword): + """ + Get the default settings for a section and/or keyword + If no arguments are given, it just returns all settings + + @type section: string + @param section: A settings section. + + @type keyword: string + @param keyword: A particular setting in a section. + + @rtype: dictionary or string + @return: Either a dictionary or string with setting(s). + + """ + + if section is None: + return DEFAULT_SETTINGS + + if keyword is None: + return DEFAULT_SETTINGS[section] + + returner = None + try: + returner = DEFAULT_SETTINGS[section][keyword] + except KeyError: + print "Error: section %s:%s doesn't exist" % (section, keyword) + + return returner + + def backup_and_rewrite_config(self) : + """ + Backs up the user configuration file (for debugging) and rewrites a + valid config file. + + The name of the backup file is the name of the settings file plus an + incremental count. + + """ + # We need to check that the file doesn't already exist, in case this has + # happened before. + new_file_free = False + renumber = 0 + + while not new_file_free: + new_name = "%s.%02i" % (SETTINGS_FILE, renumber) + + # FIXME: is this too paranoid? + if not os.path.exists(new_name): + + new_file_free = True + + created = False + + try: + os.rename(SETTINGS_FILE, new_name) + created = True + except IOError: + # Paranoid again? + print "Could not back up user configuration." + + if created: + self.settings.reset() + self.write() + else: + renumber += 1 + + +if __name__ == "__main__": + pass diff -Nru rabbitvcs-0.13.1/rabbitvcs/util/vcs.py rabbitvcs-0.15.0.5/rabbitvcs/util/vcs.py --- rabbitvcs-0.13.1/rabbitvcs/util/vcs.py 2010-03-14 04:35:46.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/util/vcs.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ -import os.path -from os.path import isdir, isfile, realpath, basename - -import pysvn - -from rabbitvcs.lib.log import Log -log = Log("rabbitvcs.util.vcs") - - -#: A list of statuses which count as modified (for a directory) in -#: TortoiseSVN emblem speak. -MODIFIED_STATUSES = [ - "added", - "deleted", - "replaced", - "modified", - "missing" -] - -def condense_statuses(path, statuses): - - status = "unknown" - - status_set = set([statuses[other_path] for other_path in statuses.keys()]) - - if not status_set: - # This indicates a serious deviation from our expected API - status = "error" - - elif "error" in status_set: - status = "error" - - # We need to take special care of directories - elif isdir(path): - # These statuses take precedence. - if "conflicted" in status_set: - status = "conflicted" - elif "obstructed" in status_set: - status = "obstructed" - - # The following statuses take precedence over the status - # of children. - elif (statuses.has_key(path) and - statuses[path] in ["added", "modified", "deleted"]): - status = statuses[path] - - # A directory should have a modified status when any of its children - # have a certain status (see modified_statuses above). Jason thought up - # of a nifty way to do this by using sets and the bitwise AND operator (&). - elif len(set(MODIFIED_STATUSES) & status_set): - status = "modified" - - elif statuses.has_key(path): - status = statuses[path] - - # If we're not a directory we end up here. - elif statuses.has_key(path): - status = statuses[path] - - else: - status = "normal" - - return status - -def summarize_status_pair(path, statuses): - - text_status = "unknown" - prop_status = "unknown" - - text_statuses = {} - prop_statuses = {} - - for other_path in statuses.keys(): - text_statuses[other_path] = statuses[other_path]["text_status"] - prop_statuses[other_path] = statuses[other_path]["prop_status"] - - # If no statuses are returned but we do have a workdir_manager - # it means that an error occured, most likely a working copy - # administration area (.svn directory) went missing but it could - # be pretty much anything. - if not statuses: - # FIXME: figure out a way to make only the directory that - # is missing display conflicted and the rest unknown. - text_status = "error" - prop_status = "error" - - else: - text_status = condense_statuses(path, text_statuses) - prop_status = condense_statuses(path, prop_statuses) - - return {path: - {"text_status": text_status, - "prop_status": prop_status}} - -def make_single_status(statuses): - """ - Given a text_status and a prop_status, simplify to a single status. - """ - - # Text statuses take priority - single = statuses["text_status"] - if single == "normal": - single = statuses["prop_status"] - if single == "none": - single = "normal" - - return single - -def summarize_status_pair_list(path, statuses): - - status_dict = {} - - for other_path, text_status, prop_status in statuses: - status_dict[other_path] = {"text_status" : text_status, - "prop_status" : prop_status} - - return summarize_status_pair(path, status_dict) - -def summarize_status(path, statuses): - """ - This is a helper function to figure out the textual representation - for a set of statuses. In TortoiseSVN speak a directory is - regarded as modified when any of its children are either added, - deleted, replaced, modified or missing so you can quickly see if - your working copy has local changes. - - This function accounts for both file and property statuses. - - @type path: list - @param path: A dict of {path : {"text_status" : [...], - "prop_status" : [...]} entries - """ - summarised = summarize_status_pair(path, statuses) - - summary = make_single_status(summarised[path]) - - return summary - -def is_working_copy(path): - vcs_client = pysvn.Client() - - try: - # when a versioned directory is removed and replaced with a - # non-versioned directory (one that doesn't have a working copy - # administration area, or .svn directory) you can't do a status - # call on that item itself (results in an exception). - # - # Note that this is not a conflict, it's more of a corruption. - # And it's associated with the status "obstructed". The only - # way to make sure that we're dealing with a working copy - # is by verifying the SVN administration area exists. - if (isdir(path) and - vcs_client.info(path) and - isdir(os.path.join(path, ".svn"))): - return True - return False - except Exception, e: - return False - -def is_in_a_or_a_working_copy(path): - return is_working_copy(path) or is_working_copy(os.path.split(path)[0]) - -def is_versioned(path): - if is_working_copy(path): - return True - else: - # info will return nothing for an unversioned file inside a working copy - vcs_client = pysvn.Client() - if (is_working_copy(os.path.split(path)[0]) and - vcs_client.info(path)): - return True - - return False \ No newline at end of file diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/branch.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/branch.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/branch.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/branch.py 2011-10-18 20:18:21.000000000 +0000 @@ -0,0 +1,35 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import rabbitvcs.util.helper +import rabbitvcs.vcs + +class BranchEntry: + def __init__(self, name, tracking=False, revision="", message=""): + self.name = name + self.tracking = tracking + self.revision = revision + self.message = message + + def __str__(self): + tracking = self.tracking and " (tracking)" or "" + return "" % (self.name, self.revision, tracking) diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/dummy/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/dummy/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/dummy/__init__.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/dummy/__init__.py 2010-12-10 18:51:18.000000000 +0000 @@ -0,0 +1,56 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +""" +Concrete VCS dummy implementation. +""" + +import rabbitvcs.vcs +import rabbitvcs.vcs.status + +class Dummy: + def __init__(self): + pass + + def status(self, path, summarize=True, invalidate=False): + return rabbitvcs.vcs.status.Status.status_unknown(path) + + def is_working_copy(self, path): + return False + + def is_in_a_or_a_working_copy(self, path): + return False + + def is_versioned(self, path): + return False + + def get_items(self, paths, statuses=[]): + return [] + + def is_locked(self, path): + return False + + def statuses(self, path, recurse=True, invalidate=False): + return [] + + def revision(self, kind, number=None): + return None diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/client.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/client.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/client.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/client.py 2011-10-21 17:07:55.000000000 +0000 @@ -0,0 +1,1570 @@ +# +# client.py +# + +import os +import os.path +import re +import shutil +import fnmatch +import time +from string import ascii_letters, digits +from datetime import datetime +from mimetypes import guess_type + +import subprocess + +import dulwich.errors +import dulwich.repo +import dulwich.objects +from dulwich.pack import Pack +from dulwich.index import commit_index, write_index_dict, SHA1Writer + +from exceptions import * +import util +from objects import * +from config import GittyupLocalFallbackConfig +from command import GittyupCommand + +TZ = -1 * time.timezone +ENCODING = "UTF-8" + +def callback_notify_null(val): + pass + +def callback_get_user(): + from pwd import getpwuid + pwuid = getpwuid(os.getuid()) + + user = pwuid[0] + fullname = pwuid[4] + host = os.getenv("HOSTNAME") + + return (fullname, "%s@%s" % (user, host)) + +def callback_get_cancel(): + return False + +def get_tmp_path(filename): + tmpdir = "/tmp/rabbitvcs" + if not os.path.isdir(tmpdir): + os.mkdir(tmpdir) + +class GittyupClient: + def __init__(self, path=None, create=False): + self.callback_notify = callback_notify_null + self.callback_get_user = callback_get_user + self.callback_get_cancel = callback_get_cancel + + self.global_ignore_patterns = [] + + self.git_version = None + + if path: + try: + self.repo = dulwich.repo.Repo(path) + self._load_config() + self.global_ignore_patterns = self._get_global_ignore_patterns() + except dulwich.errors.NotGitRepository: + if create: + self.initialize_repository(path) + self.global_ignore_patterns = self._get_global_ignore_patterns() + else: + raise NotRepositoryError() + else: + self.repo = None + + # + # Start Private Methods + # + + def _initialize_index(self): + index_path = self.repo.index_path() + f = open(index_path, "wb") + try: + f = SHA1Writer(f) + write_index_dict(f, {}) + finally: + f.close() + + def _get_index(self): + if self.repo.has_index() == False: + self._initialize_index() + + return self.repo.open_index() + + def _get_tree_at_head(self): + try: + tree = self.repo[self.repo[self.repo.head()].tree] + except KeyError, e: + tree = dulwich.objects.Tree() + + return tree + + def _get_working_tree(self): + return self.repo[commit_index(self.repo.object_store, self._get_index())] + + def _get_tree_from_sha1(self, sha1): + return self.repo[self.repo[sha1].tree] + + def _get_tree_index(self, tree=None): + if tree is None: + tree = self._get_tree_at_head() + + tree_index = {} + if tree: + for item in self.repo.object_store.iter_tree_contents(tree.id): + tree_index[item[0]] = (item[1], item[2]) + return tree_index + + def _get_git_version(self): + """ + Gets the local git version + """ + + if self.git_version: + return self.git_version + else: + try: + proc = subprocess.Popen(["git", "--version"], stdout=subprocess.PIPE) + response = proc.communicate()[0].split() + version = response[2].split(".") + self.git_version = version + return self.git_version + except Exception, e: + return None + + def _version_greater_than(self, version1, version2): + len1 = len(version1) + len2 = len(version2) + + max = 5 + + # Pad the version lists so they are the same length + if max > len1: + version1 += [0] * (max-len1) + if max > len2: + version2 += [0] * (max-len2) + + if version1[0] > version2[0]: + return True + + if (version1[0] == version2[0] + and version1[1] > version2[1]): + return True + + if (version1[0] == version2[0] + and version1[1] == version2[1] + and version1[2] > version2[2]): + return True + + if (version1[0] == version2[0] + and version1[1] == version2[1] + and version1[2] == version2[2] + and version1[3] > version2[3]): + return True + + if (version1[0] == version2[0] + and version1[1] == version2[1] + and version1[2] == version2[2] + and version1[3] == version2[3] + and version1[4] > version2[4]): + return True + + return False + + def _get_global_ignore_patterns(self): + """ + Get ignore patterns from $GIT_DIR/info/exclude then from + core.excludesfile in gitconfig. + + """ + patterns = [] + + files = self.get_global_ignore_files() + for path in files: + patterns += self.get_ignore_patterns_from_file(path) + + return patterns + + def get_global_ignore_files(self): + """ + Returns a list of ignore files possible for this repository + """ + + try: + git_dir = os.environ["GIT_DIR"] + except KeyError: + git_dir = os.path.join(self.repo.path, ".git") + + files = [] + + excludefile = os.path.join(git_dir, "info", "exclude") + files.append(excludefile) + + try: + core_excludesfile = self.config.get("core", "excludesfile") + if core_excludesfile: + files.append(core_excludesfile) + except KeyError: + pass + + return files + + def get_local_ignore_file(self, path): + if not os.path.exists(path): + return [] + + if os.path.isfile(path): + path = os.path.basename(path) + + return os.path.join(path, ".gitignore") + + def get_ignore_patterns_from_file(self, path): + """ + Read in an ignore patterns file (i.e. .gitignore, $GIT_DIR/info/exclude) + and return a list of patterns + """ + + patterns = [] + if os.path.isfile(path): + file = open(path, "r") + try: + for line in file: + if line == "" or line.startswith("#"): + continue + + patterns.append(line.rstrip("\n")) + finally: + file.close() + + return patterns + + def get_local_config_file(self): + try: + git_dir = os.environ["GIT_DIR"] + except KeyError: + git_dir = os.path.join(self.repo.path, ".git") + + return git_dir + "/config" + + def _ignore_file(self, patterns, filename): + """ + Determine whether the given file should be ignored + + """ + for pattern in patterns: + if fnmatch.fnmatch(filename, pattern) and not pattern.startswith("!"): + return True + + return False + + def _read_directory_tree(self, path, show_ignored_files=False): + files = [] + directories = [] + for root, dirs, filenames in os.walk(path, topdown=True): + try: + dirs.remove(".git") + removed_git_dir = True + except ValueError: + pass + + # Find the relative root path of this folder + if root == self.repo.path: + rel_root = "" + else: + rel_root = self.get_relative_path(root) + + for filename in filenames: + files.append(os.path.join(rel_root, filename)) + + for _d in dirs: + directories.append(os.path.join(rel_root, _d)) + + directories.append(rel_root) + + return (sorted(files), directories) + + def _get_blob_from_file(self, path): + file = open(path, "rb") + try: + blob = dulwich.objects.Blob.from_string(file.read()) + finally: + file.close() + + return blob + + def _write_blob_to_file(self, path, blob): + dirname = os.path.dirname(path) + if not os.path.isdir(dirname): + os.makedirs(dirname) + + file = open(path, "wb") + try: + file.write(blob.data) + finally: + file.close() + + def _load_config(self): + self.config = GittyupLocalFallbackConfig(self.repo.path) + + def _get_config_user(self): + try: + config_user_name = self.config.get("user", "name") + config_user_email = self.config.get("user", "email") + if config_user_name == "" or config_user_email == "": + raise KeyError() + except KeyError: + (config_user_name, config_user_email) = self.callback_get_user() + + if config_user_name == None and config_user_email == None: + return None + + self.config.set("user", "name", config_user_name) + self.config.set("user", "email", config_user_email) + self.config.write() + return "%s <%s>" % (config_user_name, config_user_email) + + def _write_packed_refs(self, refs): + packed_refs_str = "" + for ref,sha in refs.items(): + packed_refs_str = "%s %s\n" % (sha, ref) + + fd = open(os.path.join(self.repo.controldir(), "packed-refs"), "wb") + fd.write(packed_refs_str) + fd.close() + + def _remove_from_index(self, index, key): + del index._byname[key] + + # + # Start Public Methods + # + + def initialize_repository(self, path, bare=False): + if not os.path.isdir(path): + os.mkdir(path) + + cmd = ["git", "init"] + + if bare: + cmd.append("--bare") + + cmd.append(path) + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def set_repository(self, path): + try: + self.repo = dulwich.repo.Repo(path) + self._load_config() + except dulwich.errors.NotGitRepository: + raise NotRepositoryError() + + def get_repository(self): + return self.repo.path + + def find_repository_path(self, path): + path_to_check = path + while path_to_check != "/" and path_to_check != "": + if os.path.isdir(os.path.join(path_to_check, ".git")): + return path_to_check + + path_to_check = os.path.split(path_to_check)[0] + + return None + + def get_relative_path(self, path): + if path == self.repo.path: + return "" + + return util.relativepath(self.repo.path, path) + + def get_absolute_path(self, path): + return os.path.join(self.repo.path, path).rstrip("/") + + def track(self, name): + self.repo.refs.set_symbolic_ref("HEAD", name) + + def is_tracking(self, name): + return (self.repo.refs.read_ref("HEAD")[5:] == name) + + def tracking(self): + return self.repo.refs.read_ref("HEAD")[5:] + + def head(self): + return self.repo.refs["HEAD"] + + def get_sha1_from_refspec(self, refspec): + if refspec in self.repo.refs: + return self.repo.refs[refspec] + else: + return None + + def stage(self, paths): + """ + Stage files to be committed or tracked + + @type paths: list + @param paths: A list of files + + """ + + index = self._get_index() + + if type(paths) in (str, unicode): + paths = [paths] + + for path in paths: + relative_path = self.get_relative_path(path) + absolute_path = self.get_absolute_path(path) + blob = self._get_blob_from_file(absolute_path) + + if relative_path in index: + (ctime, mtime, dev, ino, mode, uid, gid, size, blob_id, flags) = index[relative_path] + else: + flags = 0 + + # make sure mtime and ctime is updated every time a file is staged + (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(path) + + index[relative_path] = (ctime, mtime, dev, ino, mode, uid, gid, size, blob.id, flags) + index.write() + + self.notify({ + "action": "Staged", + "path": absolute_path, + "mime_type": guess_type(absolute_path)[0] + }) + + self.repo.object_store.add_object(blob) + + def stage_all(self): + """ + Stage all files in a repository to be committed or tracked + + """ + + index = self._get_index() + for status in self.status(): + if status in [AddedStatus, RemovedStatus, ModifiedStatus]: + abs_path = self.get_absolute_path(status.path) + if os.path.isfile(abs_path): + self.stage(abs_path) + + if status == MissingStatus: + self._remove_from_index(index, status.path) + index.write() + + def unstage(self, paths): + """ + Unstage files so they are not committed or tracked + + @type paths: list + @param paths: A list of files + + """ + + index = self._get_index() + tree = self._get_tree_index() + + if type(paths) in (str, unicode): + paths = [paths] + + for path in paths: + relative_path = self.get_relative_path(path) + if relative_path in index: + if relative_path in tree: + (ctime, mtime, dev, ino, mode, uid, gid, size, blob_id, flags) = index[relative_path] + (mode, blob_id) = tree[relative_path] + + # If the file is locally modified, set these vars to 0 + # I'm not sure yet why this needs to happen, but it does + # in order for the file to appear modified and not normal + blob = self._get_blob_from_file(path) + if blob.id != blob_id: + ctime = 0 + mtime = 0 + dev = 0 + ino = 0 + uid = 0 + gid = 0 + size = 0 + + index[relative_path] = (ctime, mtime, dev, ino, mode, uid, gid, size, blob_id, flags) + else: + self._remove_from_index(index, relative_path) + else: + if relative_path in tree: + index[relative_path] = (0, 0, 0, 0, tree[relative_path][0], 0, 0, 0, tree[relative_path][1], 0) + + self.notify({ + "action": "Unstaged", + "path": path, + "mime_type": guess_type(path)[0] + }) + index.write() + + def unstage_all(self): + """ + Unstage all files so they are not committed or tracked + + @type paths: list + @param paths: A list of files + + """ + + index = self._get_index() + for status in self.status(): + abs_path = self.get_absolute_path(status.path) + if os.path.isfile(abs_path): + self.unstage(abs_path) + + def get_staged(self): + """ + Gets a list of files that are staged + + """ + + staged = [] + tree = self._get_tree_at_head() + index = self._get_index() + + if len(tree) > 0: + for item in index.changes_from_tree(self.repo.object_store, tree.id): + ((old_name, new_name), (old_mode, new_mode), (old_sha, new_sha)) = item + + if new_name: + staged.append(new_name) + if old_name and old_name != new_name: + staged.append(old_name) + else: + for path in index: + staged.append(path) + + return staged + + def is_staged(self, path, staged_files=None): + """ + Determines if the specified path is staged + + @type path: string + @param path: A file path + + @rtype boolean + + """ + + if not staged_files: + staged_files = self.get_staged() + + relative_path = self.get_relative_path(path) + return (relative_path in staged_files) + + def branch(self, name, commit_sha=None, track=False): + """ + Create a new branch + + @type name: string + @param name: The name of the new branch + + @type commit_sha: string + @param commit_sha: A commit sha to branch from. If None, branches + from head + + @type track: boolean + @param track: Whether or not to track the new branch, or just create it + + """ + + cmd = ["git", "branch"] + if track: + cmd.append("-t") + + cmd += [name, commit_sha] + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def branch_delete(self, name): + """ + Delete a branch + + @type name: string + @param name: The name of the branch + + """ + + ref_name = "refs/heads/%s" % name + refs = self.repo.get_refs() + if ref_name in refs: + if self.is_tracking(ref_name): + self.track("refs/heads/master") + + del self.repo.refs[ref_name] + + def branch_rename(self, old_name, new_name): + """ + Rename a branch + + @type old_name: string + @param old_name: The name of the branch to be renamed + + @type new_name: string + @param new_name: The name of the new branch + + """ + + old_ref_name = "refs/heads/%s" % old_name + new_ref_name = "refs/heads/%s" % new_name + refs = self.repo.get_refs() + if old_ref_name in refs: + self.repo.refs[new_ref_name] = self.repo.refs[old_ref_name] + if self.is_tracking(old_ref_name): + self.track(new_ref_name) + + del self.repo.refs[old_ref_name] + + def branch_list(self, commit_sha=None): + """ + List all branches + + """ + """ + refs = self.repo.get_refs() + branches = [] + for ref,branch_sha in refs.items(): + if ref.startswith("refs/heads"): + branch = Branch(ref[11:], branch_sha, self.repo[branch_sha]) + branches.append(branch) + + return branches + """ + cmd = ["git", "branch", "-lv", "--no-abbrev"] + if commit_sha: + cmd += ["--contains", commit_sha] + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + branches = [] + for line in stdout: + if not line: + continue + + components = line.split() + if components[0] != "*": + components.insert(0, "") + tracking = components.pop(0) == "*" and True or False + if components[0] == "(no": + name = components.pop(0) + " " + components.pop(0) + else: + name = components.pop(0) + revision = components.pop(0) + message = " ".join(components) + + branches.append({ + "tracking": tracking, + "name": name, + "revision": revision, + "message": message + }) + + return branches + + def checkout(self, paths=[], revision="HEAD"): + """ + Checkout a series of paths from a tree or commit. If no tree or commit + information is given, it will check out the files from head. If no + paths are given, all files will be checked out from head. + + @type paths: list + @param paths: A list of files to checkout + + @type revision: string + @param revision: The sha or branch to checkout + + """ + + if len(paths) == 1 and paths[0] == self.repo.path: + paths = [] + + cmd = ["git", "checkout", "-m", revision] + paths + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + + def clone(self, host, path, bare=False, origin="origin"): + """ + Clone a repository + + @type host: string + @param host: The url of the git repository + + @type path: string + @param path: The path to clone to + + @type bare: boolean + @param bare: Create a bare repository or not + + @type origin: string + @param origin: Specify the origin of the repository + + """ + + more = ["-o", "origin"] + if bare: + more.append("--bare") + + base_dir = os.path.split(path)[0] + + cmd = ["git", "clone", host, path] + more + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=base_dir, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def commit(self, message, parents=None, committer=None, commit_time=None, + commit_timezone=None, author=None, author_time=None, + author_timezone=None, encoding=None, commit_all=False): + """ + Commit staged files to the local repository + + @type message: string + @param message: The log message + + @type parents: list + @param parents: A list of parent SHAs. Defaults to head. + + @type committer: string + @param committer: The person committing. Defaults to + "user.name " + + @type commit_time: int + @param commit_time: The commit time. Defaults to time.time() + + @type commit_timezone: int + @param commit_timezone: The commit timezone. + Defaults to (-1 * time.timezone) + + @type author: string + @param author: The author of the file changes. Defaults to + "user.name " + + @type author_time: int + @param author_time: The author time. Defaults to time.time() + + @type author_timezone: int + @param author_timezone: The author timezone. + Defaults to (-1 * time.timezone) + + @type encoding: string + @param encoding: The encoding of the commit. Defaults to UTF-8. + + @type commit_all: boolean + @param commit_all: Stage all changed files before committing + + """ + + if not committer: + committer = self._get_config_user() + if not committer: + raise GittyupCommandError("A committer was not specified") + if not author: + author = self._get_config_user() + if not author: + raise GittyupCommandError("An author was not specified") + + if commit_all: + self.stage_all() + + commit = dulwich.objects.Commit() + commit.message = message + commit.tree = commit_index(self.repo.object_store, self._get_index()) + + initial_commit = False + try: + commit.parents = (parents and parents or [self.repo.head()]) + except KeyError: + # The initial commit has no parent + initial_commit = True + pass + + commit.committer = committer + commit.commit_time = (commit_time and commit_time or int(time.time())) + commit.commit_timezone = (commit_timezone and commit_timezone or TZ) + + commit.author = author + commit.author_time = (author_time and author_time or int(time.time())) + commit.author_timezone = (author_timezone and author_timezone or TZ) + + commit.encoding = (encoding and encoding or ENCODING) + + self.repo.object_store.add_object(commit) + + self.repo.refs["HEAD"] = commit.id + + if initial_commit: + self.track("refs/heads/master") + + return commit.id + + def remove(self, paths): + """ + Remove path from the repository. Also deletes the local file. + + @type paths: list + @param paths: A list of paths to remove + + """ + + if type(paths) in (str, unicode): + paths = [paths] + + index = self._get_index() + + for path in paths: + relative_path = self.get_relative_path(path) + if relative_path in index: + self._remove_from_index(index, relative_path) + os.remove(path) + + index.write() + + def move(self, source, dest): + """ + Move a file within the repository + + @type source: string + @param source: The source file + + @type dest: string + @param dest: The destination. If dest exists as a directory, source + will be added as a child. Otherwise, source will be renamed to + dest. + + """ + + index = self._get_index() + relative_source = self.get_relative_path(source) + relative_dest = self.get_relative_path(dest) + + # Get a list of affected files so we can update the index + source_files = [] + if os.path.isdir(source): + for name in index: + if name.startswith(relative_source): + source_files.append(name) + else: + source_files.append(self.get_relative_path(source)) + + # Rename the affected index entries + for source_file in source_files: + new_path = source_file.replace(relative_source, relative_dest) + if os.path.isdir(dest): + new_path = os.path.join(new_path, os.path.basename(source_file)) + + index[new_path] = index[source_file] + self._remove_from_index(index, source_file) + + index.write() + + # Actually move the file/folder + shutil.move(source, dest) + + def pull(self, repository="origin", refspec="master"): + """ + Fetch objects from a remote repository and merge with the local + repository + + @type repository: string + @param repository: The name of the repository + + @type refspec: string + @param refspec: The branch name to pull from + + """ + + cmd = ["git", "pull", repository, refspec] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def push(self, repository="origin", refspec="master"): + """ + Push objects from the local repository into the remote repository + and merge them. + + @type repository: string + @param repository: The name of the repository + + @type refspec: string + @param refspec: The branch name to pull from + + """ + + cmd = ["git", "push", repository, refspec] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def fetch(self, host): + """ + Fetch objects from a remote repository. This will not merge the files + into the local working copy, use pull for that. + + @type host: string + @param host: The git url from which to fetch + + """ + + client, host_path = util.get_transport_and_path(host) + + graphwalker = self.repo.get_graph_walker() + f, commit = self.repo.object_store.add_pack() + refs = client.fetch_pack(host_path, self.repo.object_store.determine_wants_all, + graphwalker, f.write, self.callback_notify) + + commit() + + return refs + + def merge(self, branch1, branch2="master"): + cmd = ["git", "merge", branch1, branch2] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def remote_add(self, name, host): + """ + Add a remote repository + + @type name: string + @param name: The name to give to the remote repository + + @type host: string + @param host: The git url to add + + """ + + cmd = ["git", "remote", "add", name, host] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def remote_rename(self, current_name, new_name): + """ + Rename a remote repository + + @type current_name: string + @param current_name: The current name of the repository + + @type new_name: string + @param new_name: The name to give to the remote repository + + """ + + cmd = ["git", "remote", "rename", current_name, new_name] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def remote_set_url(self, name, url): + """ + Change a remote repository's url + + @type name: string + @param name: The name of the repository + + @type url: string + @param url: The url for the repository + + """ + + cmd = ["git", "remote", "set-url", name, url] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def remote_delete(self, name): + """ + Remove a remote repository + + @type name: string + @param name: The name of the remote repository to remove + + """ + + cmd = ["git", "remote", "rm", name] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + def remote_list(self): + """ + Return a list of the remote repositories + + @rtype list + @return A list of dicts with keys: remote, url, fetch + + """ + + cmd = ["git", "remote", "-v"] + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + stdout = [] + + returner = [] + for line in stdout: + components = line.split() + if components: + name = components[0] + host = components[1] + + add = True + for item in returner: + if item["name"] == name: + add = False + + if add: + returner.append({ + "name": name, + "host": host + }) + + return returner + + def tag(self, name, message, revision="HEAD"): + """ + Create a tag object + + @type name: string + @param name: The name to give the tag + + @type message: string + @param message: A log message + + @type revision: string + @param revision: The revision to tag. Defaults to HEAD + + """ + + self._get_config_user() + + cmd = ["git", "tag", "-m", message, name, revision] + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + return + + def tag_delete(self, name): + """ + Delete a tag + + @type name: string + @param name: The name of the tag to delete + + """ + + ref_name = "refs/tags/%s" % name + refs = self.repo.get_refs() + if ref_name in refs: + del self.repo.refs[ref_name] + + def tag_list(self): + """ + Return a list of Tag objects + + """ + + refs = self.repo.get_refs() + + tags = [] + for ref,tag_sha in refs.items(): + if ref.startswith("refs/tags"): + if type(self.repo[tag_sha]) == dulwich.objects.Commit: + tag = CommitTag(ref[10:], tag_sha, self.repo[tag_sha]) + else: + tag = Tag(tag_sha, self.repo[tag_sha]) + tags.append(tag) + + return tags + + def status_porcelain(self, path): + if os.path.isdir(path): + (files, directories) = self._read_directory_tree(path) + else: + files = [self.get_relative_path(path)] + directories = [] + + files_hash = {} + for file in files: + files_hash[file] = True + + cmd = ["git", "status", "--porcelain", path] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify).execute() + except GittyupCommandError, e: + self.callback_notify(e) + + statuses = [] + modified_files = [] + for line in stdout: + components = re.match("^([\sA-Z\?]+)\s(.*?)$", line) + if components: + status = components.group(1) + strip_status = status.strip() + path = components.group(2) + + if status == " D": + statuses.append(MissingStatus(path)) + elif strip_status in ["M", "R", "U"]: + statuses.append(ModifiedStatus(path)) + elif strip_status in ["A", "C"]: + statuses.append(AddedStatus(path)) + elif strip_status == "D": + statuses.append(RemovedStatus(path)) + elif strip_status == "??": + statuses.append(UntrackedStatus(path)) + + modified_files.append(path) + try: + del files_hash[path] + except Exception, e: + pass + + for file,data in files_hash.items(): + statuses.append(NormalStatus(file)) + + # Determine status of folders based on child contents + for d in directories: + d_status = NormalStatus(d) + + for file in modified_files: + if os.path.join(d, os.path.basename(file)) == file: + d_status = ModifiedStatus(d) + break + + statuses.append(d_status) + + return statuses + + def status_dulwich(self, path): + tree = self._get_tree_index() + index = self._get_index() + + if os.path.isdir(path): + (files, directories) = self._read_directory_tree(path) + else: + files = [self.get_relative_path(path)] + directories = [] + + files_hash = {} + for file in files: + files_hash[file] = True + + statuses = [] + # Calculate statuses for files in the current HEAD + modified_files = [] + for name in tree: + try: + if index[name]: + inIndex = True + except Exception, e: + inIndex = False + + if inIndex: + absolute_path = self.get_absolute_path(name) + if os.path.isfile(absolute_path): + # Cached, determine if modified or not + blob = self._get_blob_from_file(absolute_path) + if blob.id == tree[name][1]: + statuses.append(NormalStatus(name)) + else: + modified_files.append(name) + statuses.append(ModifiedStatus(name)) + else: + modified_files.append(name) + statuses.append(MissingStatus(name)) + else: + modified_files.append(name) + statuses.append(RemovedStatus(name)) + + try: + del files_hash[name] + except Exception, e: + pass + + # Calculate statuses for untracked files + for name,data in files_hash.items(): + try: + inTreeIndex = tree[name] + except Exception, e: + inTreeIndex = False + + try: + inIndex = index[name] + except Exception, e: + inIndex = False + + if inIndex and not inTreeIndex: + modified_files.append(name) + statuses.append(AddedStatus(name)) + continue + + # Generate a list of appropriate ignore patterns + patterns = [] + path_to_check = os.path.dirname(self.get_absolute_path(name)) + while path_to_check != self.repo.path: + patterns += self.get_ignore_patterns_from_file(self.get_local_ignore_file(path_to_check)) + path_to_check = os.path.split(path_to_check)[0] + + patterns += self.get_ignore_patterns_from_file(self.get_local_ignore_file(self.repo.path)) + patterns += self.global_ignore_patterns + + if not self._ignore_file(patterns, os.path.basename(name)): + statuses.append(UntrackedStatus(name)) + + # Determine status of folders based on child contents + for d in directories: + d_status = NormalStatus(d) + + for file in modified_files: + if os.path.join(d, os.path.basename(file)) == file: + d_status = ModifiedStatus(d) + break + + statuses.append(d_status) + + return statuses + + def status(self, path): + version = self._get_git_version() + if version and self._version_greater_than(version, [1,7,-1]): + return self.status_porcelain(path) + else: + return self.status_dulwich(path) + + def log(self, path="", skip=0, limit=None, revision="", showtype="all"): + + cmd = ["git", "--no-pager", "log", "--numstat", "--parents", "--pretty=fuller", + "--date-order"] + + if showtype == "all": + cmd.append("--all") + + if limit: + cmd.append("-%s" % limit) + if skip: + cmd.append("--skip=%s" % skip) + if revision: + cmd.append(revision) + + if path == self.repo.path: + path = "" + if path: + cmd += ["--", path] + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + return [] + + revisions = [] + revision = {} + changed_file = {} + for line in stdout: + if line == "": + continue + + if line[0:6] == "commit": + if revision: + if "changed_paths" not in revision: + revision["changed_paths"] = {} + revisions.append(revision) + + revision = {} + changed_file = {} + commit_line = line.split(" ") + revision["commit"] = commit_line[1] + revision["parents"] = [] + for parent in commit_line[2:]: + revision["parents"].append(parent) + elif line[0:7] == "Author:": + revision["author"] = line[7:].strip() + elif line[0:11] == "AuthorDate:": + revision["author_date"] = line[11:].strip() + elif line[0:7] == "Commit:": + revision["committer"] = line[7:].strip() + elif line[0:11] == "CommitDate:": + revision["commit_date"] = line[11:].strip() + elif line[0:4] == " ": + message = line[4:] + if "message" not in revision: + revision["message"] = "" + else: + revision["message"] += "\n" + + revision["message"] = revision["message"] + message + elif line[0].isdigit() or line[0] in "-": + file_line = line.split("\t") + if not changed_file: + revision["changed_paths"] = [] + + if len(file_line) == 3: + changed_file = { + "additions": file_line[0], + "removals": file_line[1], + "path": file_line[2] + } + revision["changed_paths"].append(changed_file) + + if revision: + revisions.append(revision) + + return revisions + + def annotate(self, path, revision_obj="HEAD"): + """ + Returns an annotation for a specified file + + @type path: string + @param path: The absolute path to a tracked file + + @type revision: string + @param revision: HEAD or a sha1 hash + + """ + + relative_path = self.get_relative_path(path) + + cmd = ["git", "annotate", "-l", revision_obj, relative_path] + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + stdout = [] + + returner = [] + for line in stdout: + components = re.split("\t", line, 3) + if len(components) < 4: + continue + + dt = datetime(*time.strptime(components[2][:-6],"%Y-%m-%d %H:%M:%S")[:-2]) + + message = components[3].split(")", 1) + code = message[1] + if len(components) == 5: + code = components[4] + + returner.append({ + "revision": components[0], + "author": components[1][1:], + "date": dt, + "line": code, + "number": message[0] + }) + + return returner + + def show(self, path, revision_obj): + """ + Returns a particular file at a given revision object. + + @type path: string + @param path: The absolute path to a file + + @type revision_obj: git.Revision() + @param revision_obj: The revision object for path + + """ + if not revision_obj: + revision_obj = "HEAD" + + relative_path = self.get_relative_path(path) + + cmd = ["git", "show", "%s:%s" % (revision_obj, relative_path)] + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + stdout = [] + + return "\n".join(stdout) + + def diff(self, path1, revision_obj1, path2=None, revision_obj2=None, summarize=False): + """ + Returns the diff between the path(s)/revision(s) + + @type path1: string + @param path1: The absolute path to a file + + @type revision_obj1: git.Revision() + @param revision_obj1: The revision object for path1 + + @type path2: string + @param path2: The absolute path to a file + + @type revision_obj2: git.Revision() + @param revision_obj2: The revision object for path2 + + """ + relative_path1 = None + relative_path2 = None + if path1: + relative_path1 = self.get_relative_path(path1) + if path2: + relative_path2 = self.get_relative_path(path2) + + cmd = ["git", "diff"] + if revision_obj1: + cmd += [revision_obj1] + if revision_obj2 and path2: + cmd += [revision_obj2] + if relative_path1: + cmd += [relative_path1] + if relative_path2 and relative_path2 != relative_path1: + cmd += [relative_path2] + + if summarize: + cmd.append("--name-status") + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + stdout = [] + + return "\n".join(stdout) + + def diff_summarize(self, path1, revision_obj1, path2=None, revision_obj2=None): + results = self.diff(path1, revision_obj1, path2, revision_obj2, True) + summary = [] + for line in results.split("\n"): + if not line: + continue + + (action, path) = line.split("\t") + summary.append({ + "action": action, + "path": path + }) + + return summary + + def export(self, path, dest_path, revision): + """ + Exports a file or directory from a given revision + + @type path: string + @param path: The source file/folder to export + + @type dest_path: string + @param dest_path: The path to put the exported file(s) + + @type revision: string + @param revision: The revision/tree/commit of the source file being exported + + """ + + tmp_file = get_tmp_path("rabbitvcs-git-export.tar") + cmd1 = ["git", "archive", "--format", "tar", "-o", tmp_file, revision, path] + cmd2 = ["tar", "-xf", tmp_file, "-C", dest_path] + + if not os.path.isdir(dest_path): + os.mkdir(dest_path) + + try: + (status, stdout, stderr) = GittyupCommand(cmd1, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + (status, stdout, stderr) = GittyupCommand(cmd2, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + stdout = [] + + self.notify("%s at %s exported to %s" % (path, revision, dest_path)) + return "\n".join(stdout) + + def clean(self, path, remove_dir=True, remove_ignored_too=False, + remove_only_ignored=False, dry_run=False, force=True): + + cmd = ["git", "clean"] + if remove_dir: + cmd.append("-d") + + if remove_ignored_too: + cmd.append("-x") + + if remove_only_ignored: + cmd.append("-X") + + if dry_run: + cmd.append("-n") + + if force: + cmd.append("-f") + + relative_path = self.get_relative_path(path) + cmd.append(relative_path) + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + return + + def reset(self, path, revision, type=None): + relative_path = self.get_relative_path(path) + + cmd = ["git", "reset"] + if type: + cmd.append("--%s" % type) + + cmd.append(revision) + if relative_path: + cmd.append(relative_path) + + try: + (status, stdout, stderr) = GittyupCommand(cmd, cwd=self.repo.path, notify=self.notify, cancel=self.get_cancel).execute() + except GittyupCommandError, e: + self.callback_notify(e) + return + + def set_callback_notify(self, func): + self.callback_notify = func + + def set_callback_get_user(self, func): + self.callback_get_user = func + + def set_callback_get_cancel(self, func): + self.callback_get_cancel = func + + def notify(self, data): + self.callback_notify(data) + + def get_cancel(self): + return self.callback_get_cancel() diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/command.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/command.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/command.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/command.py 2010-12-21 16:45:43.000000000 +0000 @@ -0,0 +1,88 @@ +# +# command.py +# + +import subprocess +import fcntl +import select +import os + +from exceptions import GittyupCommandError + +def notify_func(data): + pass + +def cancel_func(): + return False + +class GittyupCommand: + def __init__(self, command, cwd=None, notify=None, cancel=None): + self.command = command + + self.notify = notify_func + if notify: + self.notify = notify + + self.get_cancel = cancel_func + if cancel: + self.get_cancel = cancel + + self.cwd = cwd + if not self.cwd: + self.cwd = os.getcwd() + + def get_lines(self, val): + returner = [] + lines = val.rstrip("\n").split("\n") + for line in lines: + returner.append(line.rstrip("\x1b[K\n")) + + return returner + + def execute(self): + proc = subprocess.Popen(self.command, + cwd=self.cwd, + stdin=None, + stderr=subprocess.STDOUT, + stdout=subprocess.PIPE, + close_fds=True) + + fcntl.fcntl( + proc.stdout.fileno(), + fcntl.F_SETFL, + fcntl.fcntl(proc.stdout.fileno(), fcntl.F_GETFL) | os.O_NONBLOCK, + ) + + stdout = [] + last_chunk = "" + while True: + readx = select.select([proc.stdout.fileno()], [], [])[0] + if readx: + chunk = last_chunk + proc.stdout.read() + if chunk == '': + break + + if chunk[-1] != "\n": + last_chunk = chunk + continue + + lines = self.get_lines(chunk) + + for line in lines: + self.notify(line) + stdout.append(line) + + chunk = "" + last_chunk = "" + + if self.get_cancel(): + proc.kill() + + if chunk: + lines = self.get_lines(chunk) + + for line in lines: + self.notify(line) + stdout.append(line) + + return (0, stdout, None) diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/_configobj/configobj.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/_configobj/configobj.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/_configobj/configobj.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/_configobj/configobj.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,2467 @@ +# configobj.py +# A config file reader/writer that supports nested sections in config files. +# Copyright (C) 2005-2010 Michael Foord, Nicola Larosa +# E-mail: fuzzyman AT voidspace DOT org DOT uk +# nico AT tekNico DOT net + +# ConfigObj 4 +# http://www.voidspace.org.uk/python/configobj.html + +# Released subject to the BSD License +# Please see http://www.voidspace.org.uk/python/license.shtml + +# Scripts maintained at http://www.voidspace.org.uk/python/index.shtml +# For information about bugfixes, updates and support, please join the +# ConfigObj mailing list: +# http://lists.sourceforge.net/lists/listinfo/configobj-develop +# Comments, suggestions and bug reports welcome. + +from __future__ import generators + +import os +import re +import sys + +from codecs import BOM_UTF8, BOM_UTF16, BOM_UTF16_BE, BOM_UTF16_LE + + +# imported lazily to avoid startup performance hit if it isn't used +compiler = None + +# A dictionary mapping BOM to +# the encoding to decode with, and what to set the +# encoding attribute to. +BOMS = { + BOM_UTF8: ('utf_8', None), + BOM_UTF16_BE: ('utf16_be', 'utf_16'), + BOM_UTF16_LE: ('utf16_le', 'utf_16'), + BOM_UTF16: ('utf_16', 'utf_16'), + } +# All legal variants of the BOM codecs. +# TODO: the list of aliases is not meant to be exhaustive, is there a +# better way ? +BOM_LIST = { + 'utf_16': 'utf_16', + 'u16': 'utf_16', + 'utf16': 'utf_16', + 'utf-16': 'utf_16', + 'utf16_be': 'utf16_be', + 'utf_16_be': 'utf16_be', + 'utf-16be': 'utf16_be', + 'utf16_le': 'utf16_le', + 'utf_16_le': 'utf16_le', + 'utf-16le': 'utf16_le', + 'utf_8': 'utf_8', + 'u8': 'utf_8', + 'utf': 'utf_8', + 'utf8': 'utf_8', + 'utf-8': 'utf_8', + } + +# Map of encodings to the BOM to write. +BOM_SET = { + 'utf_8': BOM_UTF8, + 'utf_16': BOM_UTF16, + 'utf16_be': BOM_UTF16_BE, + 'utf16_le': BOM_UTF16_LE, + None: BOM_UTF8 + } + + +def match_utf8(encoding): + return BOM_LIST.get(encoding.lower()) == 'utf_8' + + +# Quote strings used for writing values +squot = "'%s'" +dquot = '"%s"' +noquot = "%s" +wspace_plus = ' \r\n\v\t\'"' +tsquot = '"""%s"""' +tdquot = "'''%s'''" + +# Sentinel for use in getattr calls to replace hasattr +MISSING = object() + +__version__ = '4.7.0' + +try: + any +except NameError: + def any(iterable): + for entry in iterable: + if entry: + return True + return False + + +__all__ = ( + '__version__', + 'DEFAULT_INDENT_TYPE', + 'DEFAULT_INTERPOLATION', + 'ConfigObjError', + 'NestingError', + 'ParseError', + 'DuplicateError', + 'ConfigspecError', + 'ConfigObj', + 'SimpleVal', + 'InterpolationError', + 'InterpolationLoopError', + 'MissingInterpolationOption', + 'RepeatSectionError', + 'ReloadError', + 'UnreprError', + 'UnknownType', + 'flatten_errors', + 'get_extra_values' +) + +DEFAULT_INTERPOLATION = 'configparser' +DEFAULT_INDENT_TYPE = ' ' +MAX_INTERPOL_DEPTH = 10 + +OPTION_DEFAULTS = { + 'interpolation': True, + 'raise_errors': False, + 'list_values': True, + 'create_empty': False, + 'file_error': False, + 'configspec': None, + 'stringify': True, + # option may be set to one of ('', ' ', '\t') + 'indent_type': None, + 'encoding': None, + 'default_encoding': None, + 'unrepr': False, + 'write_empty_values': False, +} + + + +def getObj(s): + global compiler + if compiler is None: + import compiler + s = "a=" + s + p = compiler.parse(s) + return p.getChildren()[1].getChildren()[0].getChildren()[1] + + +class UnknownType(Exception): + pass + + +class Builder(object): + + def build(self, o): + m = getattr(self, 'build_' + o.__class__.__name__, None) + if m is None: + raise UnknownType(o.__class__.__name__) + return m(o) + + def build_List(self, o): + return map(self.build, o.getChildren()) + + def build_Const(self, o): + return o.value + + def build_Dict(self, o): + d = {} + i = iter(map(self.build, o.getChildren())) + for el in i: + d[el] = i.next() + return d + + def build_Tuple(self, o): + return tuple(self.build_List(o)) + + def build_Name(self, o): + if o.name == 'None': + return None + if o.name == 'True': + return True + if o.name == 'False': + return False + + # An undefined Name + raise UnknownType('Undefined Name') + + def build_Add(self, o): + real, imag = map(self.build_Const, o.getChildren()) + try: + real = float(real) + except TypeError: + raise UnknownType('Add') + if not isinstance(imag, complex) or imag.real != 0.0: + raise UnknownType('Add') + return real+imag + + def build_Getattr(self, o): + parent = self.build(o.expr) + return getattr(parent, o.attrname) + + def build_UnarySub(self, o): + return -self.build_Const(o.getChildren()[0]) + + def build_UnaryAdd(self, o): + return self.build_Const(o.getChildren()[0]) + + +_builder = Builder() + + +def unrepr(s): + if not s: + return s + return _builder.build(getObj(s)) + + + +class ConfigObjError(SyntaxError): + """ + This is the base class for all errors that ConfigObj raises. + It is a subclass of SyntaxError. + """ + def __init__(self, message='', line_number=None, line=''): + self.line = line + self.line_number = line_number + SyntaxError.__init__(self, message) + + +class NestingError(ConfigObjError): + """ + This error indicates a level of nesting that doesn't match. + """ + + +class ParseError(ConfigObjError): + """ + This error indicates that a line is badly written. + It is neither a valid ``key = value`` line, + nor a valid section marker line. + """ + + +class ReloadError(IOError): + """ + A 'reload' operation failed. + This exception is a subclass of ``IOError``. + """ + def __init__(self): + IOError.__init__(self, 'reload failed, filename is not set.') + + +class DuplicateError(ConfigObjError): + """ + The keyword or section specified already exists. + """ + + +class ConfigspecError(ConfigObjError): + """ + An error occured whilst parsing a configspec. + """ + + +class InterpolationError(ConfigObjError): + """Base class for the two interpolation errors.""" + + +class InterpolationLoopError(InterpolationError): + """Maximum interpolation depth exceeded in string interpolation.""" + + def __init__(self, option): + InterpolationError.__init__( + self, + 'interpolation loop detected in value "%s".' % option) + + +class RepeatSectionError(ConfigObjError): + """ + This error indicates additional sections in a section with a + ``__many__`` (repeated) section. + """ + + +class MissingInterpolationOption(InterpolationError): + """A value specified for interpolation was missing.""" + def __init__(self, option): + msg = 'missing option "%s" in interpolation.' % option + InterpolationError.__init__(self, msg) + + +class UnreprError(ConfigObjError): + """An error parsing in unrepr mode.""" + + + +class InterpolationEngine(object): + """ + A helper class to help perform string interpolation. + + This class is an abstract base class; its descendants perform + the actual work. + """ + + # compiled regexp to use in self.interpolate() + _KEYCRE = re.compile(r"%\(([^)]*)\)s") + _cookie = '%' + + def __init__(self, section): + # the Section instance that "owns" this engine + self.section = section + + + def interpolate(self, key, value): + # short-cut + if not self._cookie in value: + return value + + def recursive_interpolate(key, value, section, backtrail): + """The function that does the actual work. + + ``value``: the string we're trying to interpolate. + ``section``: the section in which that string was found + ``backtrail``: a dict to keep track of where we've been, + to detect and prevent infinite recursion loops + + This is similar to a depth-first-search algorithm. + """ + # Have we been here already? + if (key, section.name) in backtrail: + # Yes - infinite loop detected + raise InterpolationLoopError(key) + # Place a marker on our backtrail so we won't come back here again + backtrail[(key, section.name)] = 1 + + # Now start the actual work + match = self._KEYCRE.search(value) + while match: + # The actual parsing of the match is implementation-dependent, + # so delegate to our helper function + k, v, s = self._parse_match(match) + if k is None: + # That's the signal that no further interpolation is needed + replacement = v + else: + # Further interpolation may be needed to obtain final value + replacement = recursive_interpolate(k, v, s, backtrail) + # Replace the matched string with its final value + start, end = match.span() + value = ''.join((value[:start], replacement, value[end:])) + new_search_start = start + len(replacement) + # Pick up the next interpolation key, if any, for next time + # through the while loop + match = self._KEYCRE.search(value, new_search_start) + + # Now safe to come back here again; remove marker from backtrail + del backtrail[(key, section.name)] + + return value + + # Back in interpolate(), all we have to do is kick off the recursive + # function with appropriate starting values + value = recursive_interpolate(key, value, self.section, {}) + return value + + + def _fetch(self, key): + """Helper function to fetch values from owning section. + + Returns a 2-tuple: the value, and the section where it was found. + """ + # switch off interpolation before we try and fetch anything ! + save_interp = self.section.main.interpolation + self.section.main.interpolation = False + + # Start at section that "owns" this InterpolationEngine + current_section = self.section + while True: + # try the current section first + val = current_section.get(key) + if val is not None: + break + # try "DEFAULT" next + val = current_section.get('DEFAULT', {}).get(key) + if val is not None: + break + # move up to parent and try again + # top-level's parent is itself + if current_section.parent is current_section: + # reached top level, time to give up + break + current_section = current_section.parent + + # restore interpolation to previous value before returning + self.section.main.interpolation = save_interp + if val is None: + raise MissingInterpolationOption(key) + return val, current_section + + + def _parse_match(self, match): + """Implementation-dependent helper function. + + Will be passed a match object corresponding to the interpolation + key we just found (e.g., "%(foo)s" or "$foo"). Should look up that + key in the appropriate config file section (using the ``_fetch()`` + helper function) and return a 3-tuple: (key, value, section) + + ``key`` is the name of the key we're looking for + ``value`` is the value found for that key + ``section`` is a reference to the section where it was found + + ``key`` and ``section`` should be None if no further + interpolation should be performed on the resulting value + (e.g., if we interpolated "$$" and returned "$"). + """ + raise NotImplementedError() + + + +class ConfigParserInterpolation(InterpolationEngine): + """Behaves like ConfigParser.""" + _cookie = '%' + _KEYCRE = re.compile(r"%\(([^)]*)\)s") + + def _parse_match(self, match): + key = match.group(1) + value, section = self._fetch(key) + return key, value, section + + + +class TemplateInterpolation(InterpolationEngine): + """Behaves like string.Template.""" + _cookie = '$' + _delimiter = '$' + _KEYCRE = re.compile(r""" + \$(?: + (?P\$) | # Two $ signs + (?P[_a-z][_a-z0-9]*) | # $name format + {(?P[^}]*)} # ${name} format + ) + """, re.IGNORECASE | re.VERBOSE) + + def _parse_match(self, match): + # Valid name (in or out of braces): fetch value from section + key = match.group('named') or match.group('braced') + if key is not None: + value, section = self._fetch(key) + return key, value, section + # Escaped delimiter (e.g., $$): return single delimiter + if match.group('escaped') is not None: + # Return None for key and section to indicate it's time to stop + return None, self._delimiter, None + # Anything else: ignore completely, just return it unchanged + return None, match.group(), None + + +interpolation_engines = { + 'configparser': ConfigParserInterpolation, + 'template': TemplateInterpolation, +} + + +def __newobj__(cls, *args): + # Hack for pickle + return cls.__new__(cls, *args) + +class Section(dict): + """ + A dictionary-like object that represents a section in a config file. + + It does string interpolation if the 'interpolation' attribute + of the 'main' object is set to True. + + Interpolation is tried first from this object, then from the 'DEFAULT' + section of this object, next from the parent and its 'DEFAULT' section, + and so on until the main object is reached. + + A Section will behave like an ordered dictionary - following the + order of the ``scalars`` and ``sections`` attributes. + You can use this to change the order of members. + + Iteration follows the order: scalars, then sections. + """ + + + def __setstate__(self, state): + dict.update(self, state[0]) + self.__dict__.update(state[1]) + + def __reduce__(self): + state = (dict(self), self.__dict__) + return (__newobj__, (self.__class__,), state) + + + def __init__(self, parent, depth, main, indict=None, name=None): + """ + * parent is the section above + * depth is the depth level of this section + * main is the main ConfigObj + * indict is a dictionary to initialise the section with + """ + if indict is None: + indict = {} + dict.__init__(self) + # used for nesting level *and* interpolation + self.parent = parent + # used for the interpolation attribute + self.main = main + # level of nesting depth of this Section + self.depth = depth + # purely for information + self.name = name + # + self._initialise() + # we do this explicitly so that __setitem__ is used properly + # (rather than just passing to ``dict.__init__``) + for entry, value in indict.iteritems(): + self[entry] = value + + + def _initialise(self): + # the sequence of scalar values in this Section + self.scalars = [] + # the sequence of sections in this Section + self.sections = [] + # for comments :-) + self.comments = {} + self.inline_comments = {} + # the configspec + self.configspec = None + # for defaults + self.defaults = [] + self.default_values = {} + self.extra_values = [] + self._created = False + + + def _interpolate(self, key, value): + try: + # do we already have an interpolation engine? + engine = self._interpolation_engine + except AttributeError: + # not yet: first time running _interpolate(), so pick the engine + name = self.main.interpolation + if name == True: # note that "if name:" would be incorrect here + # backwards-compatibility: interpolation=True means use default + name = DEFAULT_INTERPOLATION + name = name.lower() # so that "Template", "template", etc. all work + class_ = interpolation_engines.get(name, None) + if class_ is None: + # invalid value for self.main.interpolation + self.main.interpolation = False + return value + else: + # save reference to engine so we don't have to do this again + engine = self._interpolation_engine = class_(self) + # let the engine do the actual work + return engine.interpolate(key, value) + + + def __getitem__(self, key): + """Fetch the item and do string interpolation.""" + val = dict.__getitem__(self, key) + if self.main.interpolation: + if isinstance(val, basestring): + return self._interpolate(key, val) + if isinstance(val, list): + def _check(entry): + if isinstance(entry, basestring): + return self._interpolate(key, entry) + return entry + return [_check(entry) for entry in val] + return val + + + def __setitem__(self, key, value, unrepr=False): + """ + Correctly set a value. + + Making dictionary values Section instances. + (We have to special case 'Section' instances - which are also dicts) + + Keys must be strings. + Values need only be strings (or lists of strings) if + ``main.stringify`` is set. + + ``unrepr`` must be set when setting a value to a dictionary, without + creating a new sub-section. + """ + if not isinstance(key, basestring): + raise ValueError('The key "%s" is not a string.' % key) + + # add the comment + if key not in self.comments: + self.comments[key] = [] + self.inline_comments[key] = '' + # remove the entry from defaults + if key in self.defaults: + self.defaults.remove(key) + # + if isinstance(value, Section): + if key not in self: + self.sections.append(key) + dict.__setitem__(self, key, value) + elif isinstance(value, dict) and not unrepr: + # First create the new depth level, + # then create the section + if key not in self: + self.sections.append(key) + new_depth = self.depth + 1 + dict.__setitem__( + self, + key, + Section( + self, + new_depth, + self.main, + indict=value, + name=key)) + else: + if key not in self: + self.scalars.append(key) + if not self.main.stringify: + if isinstance(value, basestring): + pass + elif isinstance(value, (list, tuple)): + for entry in value: + if not isinstance(entry, basestring): + raise TypeError('Value is not a string "%s".' % entry) + else: + raise TypeError('Value is not a string "%s".' % value) + dict.__setitem__(self, key, value) + + + def __delitem__(self, key): + """Remove items from the sequence when deleting.""" + dict. __delitem__(self, key) + if key in self.scalars: + self.scalars.remove(key) + else: + self.sections.remove(key) + del self.comments[key] + del self.inline_comments[key] + + + def get(self, key, default=None): + """A version of ``get`` that doesn't bypass string interpolation.""" + try: + return self[key] + except KeyError: + return default + + + def update(self, indict): + """ + A version of update that uses our ``__setitem__``. + """ + for entry in indict: + self[entry] = indict[entry] + + + def pop(self, key, *args): + """ + 'D.pop(k[,d]) -> v, remove specified key and return the corresponding value. + If key is not found, d is returned if given, otherwise KeyError is raised' + """ + val = dict.pop(self, key, *args) + if key in self.scalars: + del self.comments[key] + del self.inline_comments[key] + self.scalars.remove(key) + elif key in self.sections: + del self.comments[key] + del self.inline_comments[key] + self.sections.remove(key) + if self.main.interpolation and isinstance(val, basestring): + return self._interpolate(key, val) + return val + + + def popitem(self): + """Pops the first (key,val)""" + sequence = (self.scalars + self.sections) + if not sequence: + raise KeyError(": 'popitem(): dictionary is empty'") + key = sequence[0] + val = self[key] + del self[key] + return key, val + + + def clear(self): + """ + A version of clear that also affects scalars/sections + Also clears comments and configspec. + + Leaves other attributes alone : + depth/main/parent are not affected + """ + dict.clear(self) + self.scalars = [] + self.sections = [] + self.comments = {} + self.inline_comments = {} + self.configspec = None + self.defaults = [] + self.extra_values = [] + + + def setdefault(self, key, default=None): + """A version of setdefault that sets sequence if appropriate.""" + try: + return self[key] + except KeyError: + self[key] = default + return self[key] + + + def items(self): + """D.items() -> list of D's (key, value) pairs, as 2-tuples""" + return zip((self.scalars + self.sections), self.values()) + + + def keys(self): + """D.keys() -> list of D's keys""" + return (self.scalars + self.sections) + + + def values(self): + """D.values() -> list of D's values""" + return [self[key] for key in (self.scalars + self.sections)] + + + def iteritems(self): + """D.iteritems() -> an iterator over the (key, value) items of D""" + return iter(self.items()) + + + def iterkeys(self): + """D.iterkeys() -> an iterator over the keys of D""" + return iter((self.scalars + self.sections)) + + __iter__ = iterkeys + + + def itervalues(self): + """D.itervalues() -> an iterator over the values of D""" + return iter(self.values()) + + + def __repr__(self): + """x.__repr__() <==> repr(x)""" + return '{%s}' % ', '.join([('%s: %s' % (repr(key), repr(self[key]))) + for key in (self.scalars + self.sections)]) + + __str__ = __repr__ + __str__.__doc__ = "x.__str__() <==> str(x)" + + + # Extra methods - not in a normal dictionary + + def dict(self): + """ + Return a deepcopy of self as a dictionary. + + All members that are ``Section`` instances are recursively turned to + ordinary dictionaries - by calling their ``dict`` method. + + >>> n = a.dict() + >>> n == a + 1 + >>> n is a + 0 + """ + newdict = {} + for entry in self: + this_entry = self[entry] + if isinstance(this_entry, Section): + this_entry = this_entry.dict() + elif isinstance(this_entry, list): + # create a copy rather than a reference + this_entry = list(this_entry) + elif isinstance(this_entry, tuple): + # create a copy rather than a reference + this_entry = tuple(this_entry) + newdict[entry] = this_entry + return newdict + + + def merge(self, indict): + """ + A recursive update - useful for merging config files. + + >>> a = '''[section1] + ... option1 = True + ... [[subsection]] + ... more_options = False + ... # end of file'''.splitlines() + >>> b = '''# File is user.ini + ... [section1] + ... option1 = False + ... # end of file'''.splitlines() + >>> c1 = ConfigObj(b) + >>> c2 = ConfigObj(a) + >>> c2.merge(c1) + >>> c2 + ConfigObj({'section1': {'option1': 'False', 'subsection': {'more_options': 'False'}}}) + """ + for key, val in indict.items(): + if (key in self and isinstance(self[key], dict) and + isinstance(val, dict)): + self[key].merge(val) + else: + self[key] = val + + + def rename(self, oldkey, newkey): + """ + Change a keyname to another, without changing position in sequence. + + Implemented so that transformations can be made on keys, + as well as on values. (used by encode and decode) + + Also renames comments. + """ + if oldkey in self.scalars: + the_list = self.scalars + elif oldkey in self.sections: + the_list = self.sections + else: + raise KeyError('Key "%s" not found.' % oldkey) + pos = the_list.index(oldkey) + # + val = self[oldkey] + dict.__delitem__(self, oldkey) + dict.__setitem__(self, newkey, val) + the_list.remove(oldkey) + the_list.insert(pos, newkey) + comm = self.comments[oldkey] + inline_comment = self.inline_comments[oldkey] + del self.comments[oldkey] + del self.inline_comments[oldkey] + self.comments[newkey] = comm + self.inline_comments[newkey] = inline_comment + + + def walk(self, function, raise_errors=True, + call_on_sections=False, **keywargs): + """ + Walk every member and call a function on the keyword and value. + + Return a dictionary of the return values + + If the function raises an exception, raise the errror + unless ``raise_errors=False``, in which case set the return value to + ``False``. + + Any unrecognised keyword arguments you pass to walk, will be pased on + to the function you pass in. + + Note: if ``call_on_sections`` is ``True`` then - on encountering a + subsection, *first* the function is called for the *whole* subsection, + and then recurses into it's members. This means your function must be + able to handle strings, dictionaries and lists. This allows you + to change the key of subsections as well as for ordinary members. The + return value when called on the whole subsection has to be discarded. + + See the encode and decode methods for examples, including functions. + + .. admonition:: caution + + You can use ``walk`` to transform the names of members of a section + but you mustn't add or delete members. + + >>> config = '''[XXXXsection] + ... XXXXkey = XXXXvalue'''.splitlines() + >>> cfg = ConfigObj(config) + >>> cfg + ConfigObj({'XXXXsection': {'XXXXkey': 'XXXXvalue'}}) + >>> def transform(section, key): + ... val = section[key] + ... newkey = key.replace('XXXX', 'CLIENT1') + ... section.rename(key, newkey) + ... if isinstance(val, (tuple, list, dict)): + ... pass + ... else: + ... val = val.replace('XXXX', 'CLIENT1') + ... section[newkey] = val + >>> cfg.walk(transform, call_on_sections=True) + {'CLIENT1section': {'CLIENT1key': None}} + >>> cfg + ConfigObj({'CLIENT1section': {'CLIENT1key': 'CLIENT1value'}}) + """ + out = {} + # scalars first + for i in range(len(self.scalars)): + entry = self.scalars[i] + try: + val = function(self, entry, **keywargs) + # bound again in case name has changed + entry = self.scalars[i] + out[entry] = val + except Exception: + if raise_errors: + raise + else: + entry = self.scalars[i] + out[entry] = False + # then sections + for i in range(len(self.sections)): + entry = self.sections[i] + if call_on_sections: + try: + function(self, entry, **keywargs) + except Exception: + if raise_errors: + raise + else: + entry = self.sections[i] + out[entry] = False + # bound again in case name has changed + entry = self.sections[i] + # previous result is discarded + out[entry] = self[entry].walk( + function, + raise_errors=raise_errors, + call_on_sections=call_on_sections, + **keywargs) + return out + + + def as_bool(self, key): + """ + Accepts a key as input. The corresponding value must be a string or + the objects (``True`` or 1) or (``False`` or 0). We allow 0 and 1 to + retain compatibility with Python 2.2. + + If the string is one of ``True``, ``On``, ``Yes``, or ``1`` it returns + ``True``. + + If the string is one of ``False``, ``Off``, ``No``, or ``0`` it returns + ``False``. + + ``as_bool`` is not case sensitive. + + Any other input will raise a ``ValueError``. + + >>> a = ConfigObj() + >>> a['a'] = 'fish' + >>> a.as_bool('a') + Traceback (most recent call last): + ValueError: Value "fish" is neither True nor False + >>> a['b'] = 'True' + >>> a.as_bool('b') + 1 + >>> a['b'] = 'off' + >>> a.as_bool('b') + 0 + """ + val = self[key] + if val == True: + return True + elif val == False: + return False + else: + try: + if not isinstance(val, basestring): + # TODO: Why do we raise a KeyError here? + raise KeyError() + else: + return self.main._bools[val.lower()] + except KeyError: + raise ValueError('Value "%s" is neither True nor False' % val) + + + def as_int(self, key): + """ + A convenience method which coerces the specified value to an integer. + + If the value is an invalid literal for ``int``, a ``ValueError`` will + be raised. + + >>> a = ConfigObj() + >>> a['a'] = 'fish' + >>> a.as_int('a') + Traceback (most recent call last): + ValueError: invalid literal for int() with base 10: 'fish' + >>> a['b'] = '1' + >>> a.as_int('b') + 1 + >>> a['b'] = '3.2' + >>> a.as_int('b') + Traceback (most recent call last): + ValueError: invalid literal for int() with base 10: '3.2' + """ + return int(self[key]) + + + def as_float(self, key): + """ + A convenience method which coerces the specified value to a float. + + If the value is an invalid literal for ``float``, a ``ValueError`` will + be raised. + + >>> a = ConfigObj() + >>> a['a'] = 'fish' + >>> a.as_float('a') + Traceback (most recent call last): + ValueError: invalid literal for float(): fish + >>> a['b'] = '1' + >>> a.as_float('b') + 1.0 + >>> a['b'] = '3.2' + >>> a.as_float('b') + 3.2000000000000002 + """ + return float(self[key]) + + + def as_list(self, key): + """ + A convenience method which fetches the specified value, guaranteeing + that it is a list. + + >>> a = ConfigObj() + >>> a['a'] = 1 + >>> a.as_list('a') + [1] + >>> a['a'] = (1,) + >>> a.as_list('a') + [1] + >>> a['a'] = [1] + >>> a.as_list('a') + [1] + """ + result = self[key] + if isinstance(result, (tuple, list)): + return list(result) + return [result] + + + def restore_default(self, key): + """ + Restore (and return) default value for the specified key. + + This method will only work for a ConfigObj that was created + with a configspec and has been validated. + + If there is no default value for this key, ``KeyError`` is raised. + """ + default = self.default_values[key] + dict.__setitem__(self, key, default) + if key not in self.defaults: + self.defaults.append(key) + return default + + + def restore_defaults(self): + """ + Recursively restore default values to all members + that have them. + + This method will only work for a ConfigObj that was created + with a configspec and has been validated. + + It doesn't delete or modify entries without default values. + """ + for key in self.default_values: + self.restore_default(key) + + for section in self.sections: + self[section].restore_defaults() + + +class ConfigObj(Section): + """An object to read, create, and write config files.""" + + _keyword = re.compile(r'''^ # line start + (\s*) # indentation + ( # keyword + (?:".*?")| # double quotes + (?:'.*?')| # single quotes + (?:[^'"=].*?) # no quotes + ) + \s*=\s* # divider + (.*) # value (including list values and comments) + $ # line end + ''', + re.VERBOSE) + + _sectionmarker = re.compile(r'''^ + (\s*) # 1: indentation + ((?:\[\s*)+) # 2: section marker open + ( # 3: section name open + (?:"\s*\S.*?\s*")| # at least one non-space with double quotes + (?:'\s*\S.*?\s*')| # at least one non-space with single quotes + (?:[^'"\s].*?) # at least one non-space unquoted + ) # section name close + ((?:\s*\])+) # 4: section marker close + \s*([\#\;].*)? # 5: optional comment + $''', + re.VERBOSE) + + # this regexp pulls list values out as a single string + # or single values and comments + # FIXME: this regex adds a '' to the end of comma terminated lists + # workaround in ``_handle_value`` + _valueexp = re.compile(r'''^ + (?: + (?: + ( + (?: + (?: + (?:".*?")| # double quotes + (?:'.*?')| # single quotes + (?:[^'",\#\;][^,\#\;]*?) # unquoted + ) + \s*,\s* # comma + )* # match all list items ending in a comma (if any) + ) + ( + (?:".*?")| # double quotes + (?:'.*?')| # single quotes + (?:[^'",\#\;\s][^,]*?)| # unquoted + (?:(? 1: + msg = "Parsing failed with several errors.\nFirst error %s" % info + error = ConfigObjError(msg) + else: + error = self._errors[0] + # set the errors attribute; it's a list of tuples: + # (error_type, message, line_number) + error.errors = self._errors + # set the config attribute + error.config = self + raise error + # delete private attributes + del self._errors + + if configspec is None: + self.configspec = None + else: + self._handle_configspec(configspec) + + + def _initialise(self, options=None): + if options is None: + options = OPTION_DEFAULTS + + # initialise a few variables + self.filename = None + self._errors = [] + self.raise_errors = options['raise_errors'] + self.interpolation = options['interpolation'] + self.list_values = options['list_values'] + self.create_empty = options['create_empty'] + self.file_error = options['file_error'] + self.stringify = options['stringify'] + self.indent_type = options['indent_type'] + self.encoding = options['encoding'] + self.default_encoding = options['default_encoding'] + self.BOM = False + self.newlines = None + self.write_empty_values = options['write_empty_values'] + self.unrepr = options['unrepr'] + + self.initial_comment = [] + self.final_comment = [] + self.configspec = None + + if self._inspec: + self.list_values = False + + # Clear section attributes as well + Section._initialise(self) + + + def __repr__(self): + return ('ConfigObj({%s})' % + ', '.join([('%s: %s' % (repr(key), repr(self[key]))) + for key in (self.scalars + self.sections)])) + + + def _handle_bom(self, infile): + """ + Handle any BOM, and decode if necessary. + + If an encoding is specified, that *must* be used - but the BOM should + still be removed (and the BOM attribute set). + + (If the encoding is wrongly specified, then a BOM for an alternative + encoding won't be discovered or removed.) + + If an encoding is not specified, UTF8 or UTF16 BOM will be detected and + removed. The BOM attribute will be set. UTF16 will be decoded to + unicode. + + NOTE: This method must not be called with an empty ``infile``. + + Specifying the *wrong* encoding is likely to cause a + ``UnicodeDecodeError``. + + ``infile`` must always be returned as a list of lines, but may be + passed in as a single string. + """ + if ((self.encoding is not None) and + (self.encoding.lower() not in BOM_LIST)): + # No need to check for a BOM + # the encoding specified doesn't have one + # just decode + return self._decode(infile, self.encoding) + + if isinstance(infile, (list, tuple)): + line = infile[0] + else: + line = infile + if self.encoding is not None: + # encoding explicitly supplied + # And it could have an associated BOM + # TODO: if encoding is just UTF16 - we ought to check for both + # TODO: big endian and little endian versions. + enc = BOM_LIST[self.encoding.lower()] + if enc == 'utf_16': + # For UTF16 we try big endian and little endian + for BOM, (encoding, final_encoding) in BOMS.items(): + if not final_encoding: + # skip UTF8 + continue + if infile.startswith(BOM): + ### BOM discovered + ##self.BOM = True + # Don't need to remove BOM + return self._decode(infile, encoding) + + # If we get this far, will *probably* raise a DecodeError + # As it doesn't appear to start with a BOM + return self._decode(infile, self.encoding) + + # Must be UTF8 + BOM = BOM_SET[enc] + if not line.startswith(BOM): + return self._decode(infile, self.encoding) + + newline = line[len(BOM):] + + # BOM removed + if isinstance(infile, (list, tuple)): + infile[0] = newline + else: + infile = newline + self.BOM = True + return self._decode(infile, self.encoding) + + # No encoding specified - so we need to check for UTF8/UTF16 + for BOM, (encoding, final_encoding) in BOMS.items(): + if not line.startswith(BOM): + continue + else: + # BOM discovered + self.encoding = final_encoding + if not final_encoding: + self.BOM = True + # UTF8 + # remove BOM + newline = line[len(BOM):] + if isinstance(infile, (list, tuple)): + infile[0] = newline + else: + infile = newline + # UTF8 - don't decode + if isinstance(infile, basestring): + return infile.splitlines(True) + else: + return infile + # UTF16 - have to decode + return self._decode(infile, encoding) + + # No BOM discovered and no encoding specified, just return + if isinstance(infile, basestring): + # infile read from a file will be a single string + return infile.splitlines(True) + return infile + + + def _a_to_u(self, aString): + """Decode ASCII strings to unicode if a self.encoding is specified.""" + if self.encoding: + return aString.decode('ascii') + else: + return aString + + + def _decode(self, infile, encoding): + """ + Decode infile to unicode. Using the specified encoding. + + if is a string, it also needs converting to a list. + """ + if isinstance(infile, basestring): + # can't be unicode + # NOTE: Could raise a ``UnicodeDecodeError`` + return infile.decode(encoding).splitlines(True) + for i, line in enumerate(infile): + if not isinstance(line, unicode): + # NOTE: The isinstance test here handles mixed lists of unicode/string + # NOTE: But the decode will break on any non-string values + # NOTE: Or could raise a ``UnicodeDecodeError`` + infile[i] = line.decode(encoding) + return infile + + + def _decode_element(self, line): + """Decode element to unicode if necessary.""" + if not self.encoding: + return line + if isinstance(line, str) and self.default_encoding: + return line.decode(self.default_encoding) + return line + + + def _str(self, value): + """ + Used by ``stringify`` within validate, to turn non-string values + into strings. + """ + if not isinstance(value, basestring): + return str(value) + else: + return value + + + def _parse(self, infile): + """Actually parse the config file.""" + temp_list_values = self.list_values + if self.unrepr: + self.list_values = False + + comment_list = [] + done_start = False + this_section = self + maxline = len(infile) - 1 + cur_index = -1 + reset_comment = False + + while cur_index < maxline: + if reset_comment: + comment_list = [] + cur_index += 1 + line = infile[cur_index] + sline = line.strip() + # do we have anything on the line ? + if not sline or sline.startswith('#') or sline.startswith(';'): + reset_comment = False + comment_list.append(line) + continue + + if not done_start: + # preserve initial comment + self.initial_comment = comment_list + comment_list = [] + done_start = True + + reset_comment = True + # first we check if it's a section marker + mat = self._sectionmarker.match(line) + if mat is not None: + # is a section line + (indent, sect_open, sect_name, sect_close, comment) = mat.groups() + if indent and (self.indent_type is None): + self.indent_type = indent + cur_depth = sect_open.count('[') + if cur_depth != sect_close.count(']'): + self._handle_error("Cannot compute the section depth at line %s.", + NestingError, infile, cur_index) + continue + + if cur_depth < this_section.depth: + # the new section is dropping back to a previous level + try: + parent = self._match_depth(this_section, + cur_depth).parent + except SyntaxError: + self._handle_error("Cannot compute nesting level at line %s.", + NestingError, infile, cur_index) + continue + elif cur_depth == this_section.depth: + # the new section is a sibling of the current section + parent = this_section.parent + elif cur_depth == this_section.depth + 1: + # the new section is a child the current section + parent = this_section + else: + self._handle_error("Section too nested at line %s.", + NestingError, infile, cur_index) + + sect_name = self._unquote(sect_name) + + # XXX: Commented out by Adam Plumb, Feb 5, 2010 + #if sect_name in parent: + # self._handle_error('Duplicate section name at line %s.', + # DuplicateError, infile, cur_index) + # continue + + ## create the new section + #this_section = Section( + # parent, + # cur_depth, + # self, + # name=sect_name) + #parent[sect_name] = this_section + #parent.inline_comments[sect_name] = comment + #parent.comments[sect_name] = comment_list + + if sect_name in parent: + this_section = parent[sect_name] + else: + # create the new section + this_section = Section( + parent, + cur_depth, + self, + name=sect_name) + parent[sect_name] = this_section + parent.inline_comments[sect_name] = comment + parent.comments[sect_name] = comment_list + continue + # + # it's not a section marker, + # so it should be a valid ``key = value`` line + mat = self._keyword.match(line) + if mat is None: + # it neither matched as a keyword + # or a section marker + self._handle_error( + 'Invalid line at line "%s".', + ParseError, infile, cur_index) + else: + # is a keyword value + # value will include any inline comment + (indent, key, value) = mat.groups() + if indent and (self.indent_type is None): + self.indent_type = indent + # check for a multiline value + if value[:3] in ['"""', "'''"]: + try: + value, comment, cur_index = self._multiline( + value, infile, cur_index, maxline) + except SyntaxError: + self._handle_error( + 'Parse error in value at line %s.', + ParseError, infile, cur_index) + continue + else: + if self.unrepr: + comment = '' + try: + value = unrepr(value) + except Exception, e: + if type(e) == UnknownType: + msg = 'Unknown name or type in value at line %s.' + else: + msg = 'Parse error in value at line %s.' + self._handle_error(msg, UnreprError, infile, + cur_index) + continue + else: + if self.unrepr: + comment = '' + try: + value = unrepr(value) + except Exception, e: + if isinstance(e, UnknownType): + msg = 'Unknown name or type in value at line %s.' + else: + msg = 'Parse error in value at line %s.' + self._handle_error(msg, UnreprError, infile, + cur_index) + continue + else: + # extract comment and lists + try: + (value, comment) = self._handle_value(value) + except SyntaxError: + self._handle_error( + 'Parse error in value at line %s.', + ParseError, infile, cur_index) + continue + # + key = self._unquote(key) + + # XXX: Commented out by Adam Plumb, Feb 5, 2010 + #if key in this_section: + # self._handle_error( + # 'Duplicate keyword name at line %s.', + # DuplicateError, infile, cur_index) + # continue + + # add the key. + # we set unrepr because if we have got this far we will never + # be creating a new section + this_section.__setitem__(key, value, unrepr=True) + this_section.inline_comments[key] = comment + this_section.comments[key] = comment_list + continue + # + if self.indent_type is None: + # no indentation used, set the type accordingly + self.indent_type = '' + + # preserve the final comment + if not self and not self.initial_comment: + self.initial_comment = comment_list + elif not reset_comment: + self.final_comment = comment_list + self.list_values = temp_list_values + + def _match_depth(self, sect, depth): + """ + Given a section and a depth level, walk back through the sections + parents to see if the depth level matches a previous section. + + Return a reference to the right section, + or raise a SyntaxError. + """ + while depth < sect.depth: + if sect is sect.parent: + # we've reached the top level already + raise SyntaxError() + sect = sect.parent + if sect.depth == depth: + return sect + # shouldn't get here + raise SyntaxError() + + + def _handle_error(self, text, ErrorClass, infile, cur_index): + """ + Handle an error according to the error settings. + + Either raise the error or store it. + The error will have occured at ``cur_index`` + """ + line = infile[cur_index] + cur_index += 1 + message = text % cur_index + error = ErrorClass(message, cur_index, line) + if self.raise_errors: + # raise the error - parsing stops here + raise error + # store the error + # reraise when parsing has finished + self._errors.append(error) + + + def _unquote(self, value): + """Return an unquoted version of a value""" + if not value: + # should only happen during parsing of lists + raise SyntaxError + if (value[0] == value[-1]) and (value[0] in ('"', "'")): + value = value[1:-1] + return value + + + def _quote(self, value, multiline=True): + """ + Return a safely quoted version of a value. + + Raise a ConfigObjError if the value cannot be safely quoted. + If multiline is ``True`` (default) then use triple quotes + if necessary. + + * Don't quote values that don't need it. + * Recursively quote members of a list and return a comma joined list. + * Multiline is ``False`` for lists. + * Obey list syntax for empty and single member lists. + + If ``list_values=False`` then the value is only quoted if it contains + a ``\\n`` (is multiline) or '#'. + + If ``write_empty_values`` is set, and the value is an empty string, it + won't be quoted. + """ + if multiline and self.write_empty_values and value == '': + # Only if multiline is set, so that it is used for values not + # keys, and not values that are part of a list + return '' + + if multiline and isinstance(value, (list, tuple)): + if not value: + return ',' + elif len(value) == 1: + return self._quote(value[0], multiline=False) + ',' + return ', '.join([self._quote(val, multiline=False) + for val in value]) + if not isinstance(value, basestring): + if self.stringify: + value = str(value) + else: + raise TypeError('Value "%s" is not a string.' % value) + + if not value: + return '""' + + no_lists_no_quotes = not self.list_values and '\n' not in value and '#' not in value + need_triple = multiline and ((("'" in value) and ('"' in value)) or ('\n' in value )) + hash_triple_quote = multiline and not need_triple and ("'" in value) and ('"' in value) and ('#' in value) + check_for_single = (no_lists_no_quotes or not need_triple) and not hash_triple_quote + + if check_for_single: + if not self.list_values: + # we don't quote if ``list_values=False`` + quot = noquot + # for normal values either single or double quotes will do + elif '\n' in value: + # will only happen if multiline is off - e.g. '\n' in key + raise ConfigObjError('Value "%s" cannot be safely quoted.' % value) + elif ((value[0] not in wspace_plus) and + (value[-1] not in wspace_plus) and + (',' not in value)): + quot = noquot + else: + quot = self._get_single_quote(value) + else: + # if value has '\n' or "'" *and* '"', it will need triple quotes + quot = self._get_triple_quote(value) + + if quot == noquot and '#' in value and self.list_values: + quot = self._get_single_quote(value) + + return quot % value + + + def _get_single_quote(self, value): + if ("'" in value) and ('"' in value): + raise ConfigObjError('Value "%s" cannot be safely quoted.' % value) + elif '"' in value: + quot = "%s" #XXX: Changed from squot by Adam Plumb Feb 8 2010 + else: + quot = dquot + return quot + + + def _get_triple_quote(self, value): + if (value.find('"""') != -1) and (value.find("'''") != -1): + raise ConfigObjError('Value "%s" cannot be safely quoted.' % value) + if value.find('"""') == -1: + quot = tdquot + else: + quot = tsquot + return quot + + + def _handle_value(self, value): + """ + Given a value string, unquote, remove comment, + handle lists. (including empty and single member lists) + """ + if self._inspec: + # Parsing a configspec so don't handle comments + return (value, '') + # do we look for lists in values ? + if not self.list_values: + mat = self._nolistvalue.match(value) + if mat is None: + raise SyntaxError() + # NOTE: we don't unquote here + return mat.groups() + # + mat = self._valueexp.match(value) + if mat is None: + # the value is badly constructed, probably badly quoted, + # or an invalid list + raise SyntaxError() + (list_values, single, empty_list, comment) = mat.groups() + if (list_values == '') and (single is None): + # change this if you want to accept empty values + raise SyntaxError() + # NOTE: note there is no error handling from here if the regex + # is wrong: then incorrect values will slip through + if empty_list is not None: + # the single comma - meaning an empty list + return ([], comment) + if single is not None: + # handle empty values + if list_values and not single: + # FIXME: the '' is a workaround because our regex now matches + # '' at the end of a list if it has a trailing comma + single = None + else: + single = single or '""' + single = self._unquote(single) + if list_values == '': + # not a list value + return (single, comment) + the_list = self._listvalueexp.findall(list_values) + the_list = [self._unquote(val) for val in the_list] + if single is not None: + the_list += [single] + return (the_list, comment) + + + def _multiline(self, value, infile, cur_index, maxline): + """Extract the value, where we are in a multiline situation.""" + quot = value[:3] + newvalue = value[3:] + single_line = self._triple_quote[quot][0] + multi_line = self._triple_quote[quot][1] + mat = single_line.match(value) + if mat is not None: + retval = list(mat.groups()) + retval.append(cur_index) + return retval + elif newvalue.find(quot) != -1: + # somehow the triple quote is missing + raise SyntaxError() + # + while cur_index < maxline: + cur_index += 1 + newvalue += '\n' + line = infile[cur_index] + if line.find(quot) == -1: + newvalue += line + else: + # end of multiline, process it + break + else: + # we've got to the end of the config, oops... + raise SyntaxError() + mat = multi_line.match(line) + if mat is None: + # a badly formed line + raise SyntaxError() + (value, comment) = mat.groups() + return (newvalue + value, comment, cur_index) + + + def _handle_configspec(self, configspec): + """Parse the configspec.""" + # FIXME: Should we check that the configspec was created with the + # correct settings ? (i.e. ``list_values=False``) + if not isinstance(configspec, ConfigObj): + try: + configspec = ConfigObj(configspec, + raise_errors=True, + file_error=True, + _inspec=True) + except ConfigObjError, e: + # FIXME: Should these errors have a reference + # to the already parsed ConfigObj ? + raise ConfigspecError('Parsing configspec failed: %s' % e) + except IOError, e: + raise IOError('Reading configspec failed: %s' % e) + + self.configspec = configspec + + + + def _set_configspec(self, section, copy): + """ + Called by validate. Handles setting the configspec on subsections + including sections to be validated by __many__ + """ + configspec = section.configspec + many = configspec.get('__many__') + if isinstance(many, dict): + for entry in section.sections: + if entry not in configspec: + section[entry].configspec = many + + for entry in configspec.sections: + if entry == '__many__': + continue + if entry not in section: + section[entry] = {} + section[entry]._created = True + if copy: + # copy comments + section.comments[entry] = configspec.comments.get(entry, []) + section.inline_comments[entry] = configspec.inline_comments.get(entry, '') + + # Could be a scalar when we expect a section + if isinstance(section[entry], Section): + section[entry].configspec = configspec[entry] + + + def _write_line(self, indent_string, entry, this_entry, comment): + """Write an individual line, for the write method""" + # NOTE: the calls to self._quote here handles non-StringType values. + if not self.unrepr: + val = self._decode_element(self._quote(this_entry)) + else: + val = repr(this_entry) + return '%s%s%s%s%s' % (indent_string, + self._decode_element(self._quote(entry, multiline=False)), + self._a_to_u(' = '), + val, + self._decode_element(comment)) + + + def _write_marker(self, indent_string, depth, entry, comment): + """Write a section marker line""" + return '%s%s%s%s%s' % (indent_string, + self._a_to_u('[' * depth), + self._quote(self._decode_element(entry), multiline=False), + self._a_to_u(']' * depth), + self._decode_element(comment)) + + + def _handle_comment(self, comment): + """Deal with a comment.""" + if not comment: + return '' + start = self.indent_type + if not comment.startswith('#'): + start += self._a_to_u(' # ') + return (start + comment) + + + # Public methods + + def write(self, outfile=None, section=None): + """ + Write the current ConfigObj as a file + + tekNico: FIXME: use StringIO instead of real files + + >>> filename = a.filename + >>> a.filename = 'test.ini' + >>> a.write() + >>> a.filename = filename + >>> a == ConfigObj('test.ini', raise_errors=True) + 1 + """ + if self.indent_type is None: + # this can be true if initialised from a dictionary + self.indent_type = DEFAULT_INDENT_TYPE + + out = [] + cs = self._a_to_u('#') + csp = self._a_to_u('# ') + if section is None: + int_val = self.interpolation + self.interpolation = False + section = self + for line in self.initial_comment: + line = self._decode_element(line) + stripped_line = line.strip() + if stripped_line and not stripped_line.startswith(cs): + line = csp + line + out.append(line) + + indent_string = self.indent_type * section.depth + for entry in (section.scalars + section.sections): + if entry in section.defaults: + # don't write out default values + continue + for comment_line in section.comments[entry]: + comment_line = self._decode_element(comment_line.lstrip()) + if comment_line and not comment_line.startswith(cs): + comment_line = csp + comment_line + out.append(indent_string + comment_line) + this_entry = section[entry] + comment = self._handle_comment(section.inline_comments[entry]) + + if isinstance(this_entry, dict): + # a section + out.append(self._write_marker( + indent_string, + this_entry.depth, + entry, + comment)) + out.extend(self.write(section=this_entry)) + else: + out.append(self._write_line( + indent_string, + entry, + this_entry, + comment)) + + if section is self: + for line in self.final_comment: + line = self._decode_element(line) + stripped_line = line.strip() + if stripped_line and not stripped_line.startswith(cs): + line = csp + line + out.append(line) + self.interpolation = int_val + + if section is not self: + return out + + if (self.filename is None) and (outfile is None): + # output a list of lines + # might need to encode + # NOTE: This will *screw* UTF16, each line will start with the BOM + if self.encoding: + out = [l.encode(self.encoding) for l in out] + if (self.BOM and ((self.encoding is None) or + (BOM_LIST.get(self.encoding.lower()) == 'utf_8'))): + # Add the UTF8 BOM + if not out: + out.append('') + out[0] = BOM_UTF8 + out[0] + return out + + # Turn the list to a string, joined with correct newlines + newline = self.newlines or os.linesep + output = self._a_to_u(newline).join(out) + if self.encoding: + output = output.encode(self.encoding) + if self.BOM and ((self.encoding is None) or match_utf8(self.encoding)): + # Add the UTF8 BOM + output = BOM_UTF8 + output + + if not output.endswith(newline): + output += newline + if outfile is not None: + outfile.write(output) + else: + h = open(self.filename, 'wb') + h.write(output) + h.close() + + + def validate(self, validator, preserve_errors=False, copy=False, + section=None): + """ + Test the ConfigObj against a configspec. + + It uses the ``validator`` object from *validate.py*. + + To run ``validate`` on the current ConfigObj, call: :: + + test = config.validate(validator) + + (Normally having previously passed in the configspec when the ConfigObj + was created - you can dynamically assign a dictionary of checks to the + ``configspec`` attribute of a section though). + + It returns ``True`` if everything passes, or a dictionary of + pass/fails (True/False). If every member of a subsection passes, it + will just have the value ``True``. (It also returns ``False`` if all + members fail). + + In addition, it converts the values from strings to their native + types if their checks pass (and ``stringify`` is set). + + If ``preserve_errors`` is ``True`` (``False`` is default) then instead + of a marking a fail with a ``False``, it will preserve the actual + exception object. This can contain info about the reason for failure. + For example the ``VdtValueTooSmallError`` indicates that the value + supplied was too small. If a value (or section) is missing it will + still be marked as ``False``. + + You must have the validate module to use ``preserve_errors=True``. + + You can then use the ``flatten_errors`` function to turn your nested + results dictionary into a flattened list of failures - useful for + displaying meaningful error messages. + """ + if section is None: + if self.configspec is None: + raise ValueError('No configspec supplied.') + if preserve_errors: + # We do this once to remove a top level dependency on the validate module + # Which makes importing configobj faster + from validate import VdtMissingValue + self._vdtMissingValue = VdtMissingValue + + section = self + + if copy: + section.initial_comment = section.configspec.initial_comment + section.final_comment = section.configspec.final_comment + section.encoding = section.configspec.encoding + section.BOM = section.configspec.BOM + section.newlines = section.configspec.newlines + section.indent_type = section.configspec.indent_type + + # + # section.default_values.clear() #?? + configspec = section.configspec + self._set_configspec(section, copy) + + + def validate_entry(entry, spec, val, missing, ret_true, ret_false): + section.default_values.pop(entry, None) + + try: + section.default_values[entry] = validator.get_default_value(configspec[entry]) + except (KeyError, AttributeError, validator.baseErrorClass): + # No default, bad default or validator has no 'get_default_value' + # (e.g. SimpleVal) + pass + + try: + check = validator.check(spec, + val, + missing=missing + ) + except validator.baseErrorClass, e: + if not preserve_errors or isinstance(e, self._vdtMissingValue): + out[entry] = False + else: + # preserve the error + out[entry] = e + ret_false = False + ret_true = False + else: + ret_false = False + out[entry] = True + if self.stringify or missing: + # if we are doing type conversion + # or the value is a supplied default + if not self.stringify: + if isinstance(check, (list, tuple)): + # preserve lists + check = [self._str(item) for item in check] + elif missing and check is None: + # convert the None from a default to a '' + check = '' + else: + check = self._str(check) + if (check != val) or missing: + section[entry] = check + if not copy and missing and entry not in section.defaults: + section.defaults.append(entry) + return ret_true, ret_false + + # + out = {} + ret_true = True + ret_false = True + + unvalidated = [k for k in section.scalars if k not in configspec] + incorrect_sections = [k for k in configspec.sections if k in section.scalars] + incorrect_scalars = [k for k in configspec.scalars if k in section.sections] + + for entry in configspec.scalars: + if entry in ('__many__', '___many___'): + # reserved names + continue + if (not entry in section.scalars) or (entry in section.defaults): + # missing entries + # or entries from defaults + missing = True + val = None + if copy and entry not in section.scalars: + # copy comments + section.comments[entry] = ( + configspec.comments.get(entry, [])) + section.inline_comments[entry] = ( + configspec.inline_comments.get(entry, '')) + # + else: + missing = False + val = section[entry] + + ret_true, ret_false = validate_entry(entry, configspec[entry], val, + missing, ret_true, ret_false) + + many = None + if '__many__' in configspec.scalars: + many = configspec['__many__'] + elif '___many___' in configspec.scalars: + many = configspec['___many___'] + + if many is not None: + for entry in unvalidated: + val = section[entry] + ret_true, ret_false = validate_entry(entry, many, val, False, + ret_true, ret_false) + unvalidated = [] + + for entry in incorrect_scalars: + ret_true = False + if not preserve_errors: + out[entry] = False + else: + ret_false = False + msg = 'Value %r was provided as a section' % entry + out[entry] = validator.baseErrorClass(msg) + for entry in incorrect_sections: + ret_true = False + if not preserve_errors: + out[entry] = False + else: + ret_false = False + msg = 'Section %r was provided as a single value' % entry + out[entry] = validator.baseErrorClass(msg) + + # Missing sections will have been created as empty ones when the + # configspec was read. + for entry in section.sections: + # FIXME: this means DEFAULT is not copied in copy mode + if section is self and entry == 'DEFAULT': + continue + if section[entry].configspec is None: + unvalidated.append(entry) + continue + if copy: + section.comments[entry] = configspec.comments.get(entry, []) + section.inline_comments[entry] = configspec.inline_comments.get(entry, '') + check = self.validate(validator, preserve_errors=preserve_errors, copy=copy, section=section[entry]) + out[entry] = check + if check == False: + ret_true = False + elif check == True: + ret_false = False + else: + ret_true = False + + section.extra_values = unvalidated + if preserve_errors and not section._created: + # If the section wasn't created (i.e. it wasn't missing) + # then we can't return False, we need to preserve errors + ret_false = False + # + if ret_false and preserve_errors and out: + # If we are preserving errors, but all + # the failures are from missing sections / values + # then we can return False. Otherwise there is a + # real failure that we need to preserve. + ret_false = not any(out.values()) + if ret_true: + return True + elif ret_false: + return False + return out + + + def reset(self): + """Clear ConfigObj instance and restore to 'freshly created' state.""" + self.clear() + self._initialise() + # FIXME: Should be done by '_initialise', but ConfigObj constructor (and reload) + # requires an empty dictionary + self.configspec = None + # Just to be sure ;-) + self._original_configspec = None + + + def reload(self): + """ + Reload a ConfigObj from file. + + This method raises a ``ReloadError`` if the ConfigObj doesn't have + a filename attribute pointing to a file. + """ + if not isinstance(self.filename, basestring): + raise ReloadError() + + filename = self.filename + current_options = {} + for entry in OPTION_DEFAULTS: + if entry == 'configspec': + continue + current_options[entry] = getattr(self, entry) + + configspec = self._original_configspec + current_options['configspec'] = configspec + + self.clear() + self._initialise(current_options) + self._load(filename, configspec) + + + +class SimpleVal(object): + """ + A simple validator. + Can be used to check that all members expected are present. + + To use it, provide a configspec with all your members in (the value given + will be ignored). Pass an instance of ``SimpleVal`` to the ``validate`` + method of your ``ConfigObj``. ``validate`` will return ``True`` if all + members are present, or a dictionary with True/False meaning + present/missing. (Whole missing sections will be replaced with ``False``) + """ + + def __init__(self): + self.baseErrorClass = ConfigObjError + + def check(self, check, member, missing=False): + """A dummy check method, always returns the value unchanged.""" + if missing: + raise self.baseErrorClass() + return member + + +def flatten_errors(cfg, res, levels=None, results=None): + """ + An example function that will turn a nested dictionary of results + (as returned by ``ConfigObj.validate``) into a flat list. + + ``cfg`` is the ConfigObj instance being checked, ``res`` is the results + dictionary returned by ``validate``. + + (This is a recursive function, so you shouldn't use the ``levels`` or + ``results`` arguments - they are used by the function.) + + Returns a list of keys that failed. Each member of the list is a tuple:: + + ([list of sections...], key, result) + + If ``validate`` was called with ``preserve_errors=False`` (the default) + then ``result`` will always be ``False``. + + *list of sections* is a flattened list of sections that the key was found + in. + + If the section was missing (or a section was expected and a scalar provided + - or vice-versa) then key will be ``None``. + + If the value (or section) was missing then ``result`` will be ``False``. + + If ``validate`` was called with ``preserve_errors=True`` and a value + was present, but failed the check, then ``result`` will be the exception + object returned. You can use this as a string that describes the failure. + + For example *The value "3" is of the wrong type*. + """ + if levels is None: + # first time called + levels = [] + results = [] + if res == True: + return results + if res == False or isinstance(res, Exception): + results.append((levels[:], None, res)) + if levels: + levels.pop() + return results + for (key, val) in res.items(): + if val == True: + continue + if isinstance(cfg.get(key), dict): + # Go down one level + levels.append(key) + flatten_errors(cfg[key], val, levels, results) + continue + results.append((levels[:], key, val)) + # + # Go up one level + if levels: + levels.pop() + # + return results + + +def get_extra_values(conf, _prepend=()): + """ + Find all the values and sections not in the configspec from a validated + ConfigObj. + + ``get_extra_values`` returns a list of tuples where each tuple represents + either an extra section, or an extra value. + + The tuples contain two values, a tuple representing the section the value + is in and the name of the extra values. For extra values in the top level + section the first member will be an empty tuple. For values in the 'foo' + section the first member will be ``('foo',)``. For members in the 'bar' + subsection of the 'foo' section the first member will be ``('foo', 'bar')``. + + NOTE: If you call ``get_extra_values`` on a ConfigObj instance that hasn't + been validated it will return an empty list. + """ + out = [] + + out.extend((_prepend, name) for name in conf.extra_values) + for name in conf.sections: + if name not in conf.extra_values: + out.extend(get_extra_values(conf[name], _prepend + (name,))) + return out + + +"""*A programming language is a medium of expression.* - Paul Graham""" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/config.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/config.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/config.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/config.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,281 @@ +# +# config.py +# + +import os +import warnings + +from _configobj.configobj import ConfigObj + +def get_local_config_path(repository_path): + return repository_path + "/.git/config" + +def get_global_config_path(): + return os.path.expanduser("~/.gitconfig") + +def get_system_config_path(): + return "/etc/gitconfig" + +class GittyupConfig: + def __init__(self, path): + """ + Provides direct access to any arbitrary git config file + + @type path string + @param path The git config file path + + """ + self.path = path + self._config = ConfigObj(path, indent_type="\t") + + def set(self, section, key, value): + if section not in self._config: + self._config[section] = {} + + self._config[section][key] = value + + def get(self, section, key): + try: + return self._config[section][key] + except KeyError: + return u"" + + def has(self, section, key=None): + if section in self._config: + if key is None: + return True + else: + return (key in self._config[section]) + + def rename(self, section, old_key, new_key): + self._config[section][new_key] = self._config[section][old_key] + del self._config[section][old_key] + + def get_all(self): + return self._config.items() + + def set_section(self, section, items): + self._config[section] = items + + def get_section(self, section): + return self._config[section] + + def rename_section(self, old_section, new_section): + self._config[new_section] = self._config[old_section] + del self._config[old_section] + + def remove_section(self, section): + del self._config[section] + + def get_inline_comment(self, section, key): + if key is not None: + return self._config[section].inline_comments[key] + else: + return self._config.inline_comments[section] + + def set_inline_comment(self, section, key, value): + if section not in self._config.inline_comments: + self._config.inline_comments[section] = {} + + if key is not None: + self._config[section].inline_comments[key] = value + else: + self._config.inline_comments[section] = value + + def remove_inline_comment(self, section, key): + if key is not None: + del self._config[section].inline_comments[key] + else: + self._config.inline_comments[section] + + def get_comment(self, section, key): + if key is not None: + return self._config[section].comments[key] + else: + return self._config.comments[section] + + def set_comment(self, section, key, value): + if section not in self._config.comments: + self._config[section].comments = {} + + if key is not None: + self._config[section].comments[key] = value + else: + self._config.comments[section] = value + + def remove_comment(self, section, key): + if key is not None: + del self._config[section].comments[key] + else: + del self._config.comments[section] + + def write(self): + self._config.write() + +class GittyupLocalConfig(GittyupConfig): + def __init__(self, repository_path): + """ + Provides direct access to a local repository's git config file + + @type repository_path string + @param repository_path The root folder of a git repository + + """ + GittyupConfig.__init__(self, get_local_config_path(repository_path)) + +class GittyupGlobalConfig(GittyupConfig): + def __init__(self): + """ + Provides direct access to the global-level git config file + + """ + GittyupConfig.__init__(self, get_global_config_path()) + +class GittyupSystemConfig(GittyupConfig): + def __init__(self): + """ + Provides direct access to the system-level git config file + + """ + GittyupConfig.__init__(self, get_system_config_path()) + + def write(self): + try: + self._config.write() + except IOError, e: + warnings.warn("Can't write to system git config file, %s" % str(e), UserWarning) + +class GittyupFallbackConfig: + """ + An abstract class to provide transparent support for accessing local, global, + and system-level git config files. Must be sub-classed. + + """ + def set(self, section, key, value): + self._config(section, key).set(section, key, value) + + def get(self, section, key): + return self._config(section, key).get(section, key) + + def has(self, section, key=None): + return self._config(section, key).has(section, key) + + def rename(self, section, old_key, new_key): + self._config(section, old_key).rename(section, old_key, new_key) + + def get_all(self): + raise NotImplementedError() + + def set_section(self, section, items): + self._config(section).set_section(section, items) + + def get_section(self, section): + return self._config(section).get_section(section) + + def rename_section(self, old_section, new_section): + self._config(old_section).rename_section(old_section, new_section) + + def remove_section(self, section): + self._config(section).remove_section(section) + + def get_inline_comment(self, section, key): + return self._config(section, key).get_inline_comment(section, key) + + def set_inline_comment(self, section, key, value): + self._config(section, key).set_inline_comment(section, key, value) + + def remove_inline_comment(self, section, key): + self._config(section, key).remove_inline_comment(section, key) + + def get_comment(self, section, key): + return self._config(section, key).get_comment(section, key) + + def set_comment(self, section, key, value): + self._config(section, key).set_comment(section, key, value) + + def remove_comment(self, section, key): + self._config(section, key).remove_comment(section, key) + + def _config(self, section, key=None): + raise NotImplementedError() + + def _write(self): + raise NotImplementedError() + +class GittyupLocalFallbackConfig(GittyupFallbackConfig): + def __init__(self, repository_path): + """ + Provides transparent access to the local, global, and system-level + git config files. + + @type repository_path string + @param repository_path The root folder of a git repository + + """ + self._local = GittyupLocalConfig(repository_path) + self._global = GittyupGlobalConfig() + self._system = GittyupSystemConfig() + self._must_write_to_system = False + + def _config(self, section, key=None): + if self._local.has(section, key): + return self._local + elif self._system.has(section, key): + self._must_write_to_system = True + return self._system + elif self._global.has(section, key): + return self._global + else: + return self._local + + def write(self): + self._local.write() + self._global.write() + + if self._must_write_to_system: + # Only root can write to the system config file, so only do it + # if we must + self._system.write() + + def get_all(self): + ret = self._local._config + ret.update(self._global._config) + ret.update(self._system._config) + + return ret.items() + + +class GittyupGlobalFallbackConfig(GittyupFallbackConfig): + def __init__(self): + """ + Provides transparent access to the global and system-level git config + files. It is useful for when you want to set global or system level + config parameters, but don't need to access a local repository. + + """ + self._global = GittyupGlobalConfig() + self._system = GittyupSystemConfig() + self._must_write_to_system = False + + def _config(self, section, key=None): + if self._global.has(section, key): + return self._global + elif self._system.has(section, key): + self._must_write_to_system = True + return self._system + else: + return self._global + + def write(self): + self._global.write() + + if self._must_write_to_system: + # Only root can write to the system config file, so only do it + # if we must + self._system.write() + + def get_all(self): + ret = self._global._config + ret.update(self._system._config) + + return ret.items() diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/exceptions.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/exceptions.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/exceptions.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/exceptions.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,39 @@ +# +# exceptions.py +# + +class NotRepositoryError(Exception): + """Indicates that no Git repository was found.""" + + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + +class NotTreeError(Exception): + """Indicates the given sha1 hash does not point to a valid Tree""" + + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + +class NotCommitError(Exception): + """Indicates the given sha1 hash does not point to a valid Commit""" + + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + +class NotBlobError(Exception): + """Indicates the given sha1 hash does not point to a valid Blob""" + + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + +class NotTagError(Exception): + """Indicates the given sha1 hash does not point to a valid Commit""" + + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + +class GittyupCommandError(Exception): + """Indicates a command returned an error""" + + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/objects.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/objects.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/objects.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/objects.py 2010-10-11 12:06:52.000000000 +0000 @@ -0,0 +1,181 @@ +# +# objects.py +# + +class GittyupStatus: + path = None + is_staged = False + def __init__(self, path): + self.path = path + + def __repr__(self): + return "" % (self.path, self.identifier) + + def __eq__(self, other): + return (self.identifier == other.identifier) + +class NormalStatus(GittyupStatus): + identifier = "normal" + +class AddedStatus(GittyupStatus): + identifier = "added" + +class RenamedStatus(GittyupStatus): + identifier = "renamed" + +class RemovedStatus(GittyupStatus): + identifier = "removed" + +class ModifiedStatus(GittyupStatus): + identifier = "modified" + +class KilledStatus(GittyupStatus): + identifier = "killed" + +class UntrackedStatus(GittyupStatus): + identifier = "untracked" + +class MissingStatus(GittyupStatus): + identifier = "missing" + +class NoStatus(GittyupStatus): + identifier = "" + def __eq__(self, other): + return (self.path == other.path) + +class GittyupObject: + def __init__(self, sha, obj): + self.sha = sha + self.obj = obj + +class Commit(GittyupObject): + def __init__(self, sha, obj, changed_paths=[]): + self.sha = sha + self.obj = obj + self.changed_paths = changed_paths + + def __repr__(self): + return "" % self.sha + + @property + def parents(self): + return self.obj.parents + + @property + def author(self): + return self.obj.author + + @property + def committer(self): + return self.obj.committer + + @property + def message(self): + return self.obj.message + + @property + def commit_time(self): + return self.obj.commit_time + + @property + def commit_timezone(self): + return self.obj.commit_timezone + + @property + def author_time(self): + return self.obj.author_time + + @property + def author_timezone(self): + return self.obj.author_timezone + + @property + def encoding(self): + return self.obj.encoding + + def __eq__(self, other): + return self.sha == other.sha + +class Tag(GittyupObject): + def __repr__(self): + return "" % self.sha + + @property + def name(self): + return self.obj.name + + @property + def tag_type(self): + return self.obj.type + + @property + def message(self): + return self.obj.message + + @property + def tagger(self): + return self.obj.tagger + + @property + def tag_time(self): + return self.obj.tag_time + + @property + def tag_timezone(self): + return self.obj.tag_timezone + +class CommitTag(Commit): + def __init__(self, name, sha, obj): + self.name = name + self.sha = sha + self.obj = obj + + def __repr__(self): + return "" % (self.name, self.sha) + + @property + def name(self): + return self.name + + def __eq__(self, other): + return (self.name == other) + + @property + def tag_type(self): + return "" + + @property + def message(self): + return self.obj.message + + @property + def tagger(self): + return self.obj.committer + + @property + def tag_time(self): + return self.obj.commit_time + + @property + def tag_timezone(self): + return self.obj.commit_timezone + +class Tree(GittyupObject): + def __repr__(self): + return "" % self.sha + +class Branch(Commit): + def __init__(self, name, sha, obj): + self.name = name + self.sha = sha + self.obj = obj + + def __repr__(self): + return "" % (self.name, self.sha) + + @property + def name(self): + return self.obj.name + + def __eq__(self, other): + return (self.name == other) diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/branch.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/branch.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/branch.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/branch.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,62 @@ +# +# test/stage.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from util import touch + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "branch" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "branch.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + os.mkdir(DIR) + g = GittyupClient() + g.initialize_repository(DIR) + + touch(DIR + "/test1.txt") + touch(DIR + "/test2.txt") + + g.stage([DIR+"/test1.txt", DIR+"/test2.txt"]) + g.commit("This is a commit") + + # Create a new branch, don't track it + g.branch("branch1") + assert ("branch1" in g.branch_list()) + + # Make sure we are still tracking master + assert (g.is_tracking("refs/heads/master")) + + # Track branch1 + g.track("refs/heads/branch1") + assert (g.is_tracking("refs/heads/branch1")) + + # Rename branch1 to branch1b + g.branch_rename("branch1", "branch1b") + assert ("branch1b" in g.branch_list()) + + # Make sure we are now tracking branch1b + assert (g.is_tracking("refs/heads/branch1b")) + + # Delete branch1b + g.branch_delete("branch1b") + assert ("branch1b" not in g.branch_list()) + + # Make sure we are now tracking master + assert (g.is_tracking("refs/heads/master")) + + print "branch.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/clone.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/clone.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/clone.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/clone.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,31 @@ +# +# test/clone.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from util import touch + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "clone" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "clone.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + g = GittyupClient() + g.clone("git://github.com/adamplumb/sprout.git", DIR) + + + print "clone.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/commit.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/commit.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/commit.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/commit.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,42 @@ +# +# test/stage.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from gittyup.objects import * +from util import touch, change + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "commit" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "commit.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + os.mkdir(DIR) + g = GittyupClient() + g.initialize_repository(DIR) + + touch(DIR + "/test1.txt") + touch(DIR + "/test2.txt") + + g.stage([DIR+"/test1.txt", DIR+"/test2.txt"]) + g.commit("First commit", commit_all=True) + + change(DIR + "/test1.txt") + g.stage([DIR+"/test1.txt"]) + g.commit("Second commit", author="Alex Plumb ") + + print "commit.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/config.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/config.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/config.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/config.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,66 @@ +# +# test/stage.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from gittyup.objects import * +from util import touch, change +from gittyup.config import GittyupLocalFallbackConfig, GittyupConfig, GittyupSystemConfig + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "config" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "config.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + g = GittyupClient(DIR, create=True) + c = GittyupLocalFallbackConfig(DIR) + + # Create config items + c.set("core", "filemode", True) + c.set("core", "repositoryformatversion", 0) + + # Add comments + c.set_comment("core", "filemode", ["Regular comment"]) + c.set_inline_comment("core", "repositoryformatversion", "inline repo format comment") + + # Create new section/items and then rename them + c.set("newsection", "newitem", "Val A") + c.rename_section("newsection", "newsection_RE") + c.rename("newsection_RE", "newitem", "newitem_RE") + c.write() + + del c + + c = GittyupLocalFallbackConfig(DIR) + + assert (c.has("newsection_RE", "newitem_RE")) + assert (c.get_comment("core", "filemode")[0].find("Regular comment") != -1) + assert (c.get_inline_comment("core", "repositoryformatversion").find("inline repo format comment") != -1) + + del c + + c = GittyupConfig("./data/config/config.example") + + assert (c.has("diff", "renames")) + + del c + + c = GittyupSystemConfig() + c.set("section", "key", "value") + c.write() + + print "config.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/data/config/config.example rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/data/config/config.example --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/data/config/config.example 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/data/config/config.example 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,20 @@ +# +# This is the config file, and +# a '#' or ';' character indicates +# a comment +# + +; core variables +[core] + ; Don't trust file modes + filemode = false + +; Our diff algorithm +[diff] + external = /usr/local/bin/diff-wrapper + renames = true + +; Proxy settings +[core] + gitproxy="proxy-command" + gitproxy=default-proxy ; for all the rest diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/move.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/move.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/move.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/move.py 2010-10-06 12:05:43.000000000 +0000 @@ -0,0 +1,67 @@ +# +# test/stage.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from gittyup.objects import * +from util import touch, change + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "move" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "move.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + g = GittyupClient(DIR, create=True) + + touch(DIR + "/test.txt") + + # Stage and commit the file + g.stage([DIR+"/test.txt"]) + g.commit("Adding test.txt") + + st = g.status() + + # Move file explicity test + os.mkdir(DIR+"/fol") + g.move(DIR+"/test.txt", DIR+"/fol/test.txt") + st = g.status() + assert (not os.path.exists(DIR+"/test.txt")) + assert (os.path.exists(DIR+"/fol/test.txt")) + assert (g.is_staged(DIR+"/fol/test.txt")) + assert (st[0] == RemovedStatus) + assert (st[1] == AddedStatus) + + # Move as children test + touch(DIR + "/test2.txt") + g.stage([DIR+"/test2.txt"]) + g.commit("Adding test2.txt") + g.move(DIR+"/test2.txt", DIR+"/fol") + st = g.status() + assert (not os.path.exists(DIR+"/test2.txt")) + assert (os.path.exists(DIR+"/fol/test2.txt")) + assert (g.is_staged(DIR+"/fol/test2.txt")) + assert (st[1] == RemovedStatus) + assert (st[2] == AddedStatus) + g.commit("Committing the test2 move") + + g.move(DIR+"/fol", DIR+"/bar") + st = g.status() + assert (os.path.exists(DIR+"/bar/test.txt")) + assert (st[0] == RemovedStatus) + assert (st[2] == AddedStatus) + + print "move.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/pull.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/pull.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/pull.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/pull.py 2010-10-06 12:05:43.000000000 +0000 @@ -0,0 +1,31 @@ +# +# test/pull.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from util import touch + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "pull" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "pull.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + g = GittyupClient(DIR, create=True) + g.remote_add("origin", "git://github.com/adamplumb/gittyup.git") + g.pull("origin", "master") + + print "pull.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/remote.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/remote.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/remote.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/remote.py 2010-10-06 12:05:43.000000000 +0000 @@ -0,0 +1,40 @@ +# +# test/remote.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from util import touch + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "remote" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "remote.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + os.mkdir(DIR) + g = GittyupClient(DIR, create=True) + g.remote_add("origin", "git://github.com/adamplumb/sprout.git") + l = g.remote_list() + + assert (len(l) == 1) + assert (l[0]["host"] == "git://github.com/adamplumb/sprout.git") + + g.remote_delete("origin") + l = g.remote_list() + + assert (len(l) == 0) + + print "remote.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/remove.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/remove.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/remove.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/remove.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,56 @@ +# +# test/stage.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from gittyup.objects import * +from util import touch, change + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "remove" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "remove.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + os.mkdir(DIR) + g = GittyupClient() + g.initialize_repository(DIR) + + touch(DIR + "/test.txt") + + # Stage and commit the file + g.stage([DIR+"/test.txt"]) + g.commit("Adding test.txt") + + g.remove([DIR+"/test.txt"]) + st = g.status() + assert (not os.path.exists(DIR+"/test.txt")) + assert (g.is_staged(DIR+"/test.txt")) + assert (st[0] == RemovedStatus) + + g.unstage([DIR+"/test.txt"]) + st = g.status() + assert (not os.path.exists(DIR+"/test.txt")) + assert (not g.is_staged(DIR+"/test.txt")) + assert (st[0] == MissingStatus) + + g.checkout([DIR+"/test.txt"]) + st = g.status() + assert (os.path.exists(DIR+"/test.txt")) + assert (not g.is_staged(DIR+"/test.txt")) + assert (st[0] == NormalStatus) + + print "remove.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/run_all.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/run_all.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/run_all.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/run_all.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,31 @@ +#!/usr/bin/python + +from sys import argv +import os +import subprocess + +def cleanup(modules): + for module in modules: + subprocess.call(["python", module, "--cleanup"]) + +modules = [ + "branch.py", + "stage.py", + "config.py", + "commit.py", + "tag.py", + "remove.py", + "clone.py", + "move.py", + "pull.py", + "remote.py" +] + +if len(argv) == 2 and argv[1] == "--cleanup": + cleanup(modules) + +for module in modules: + if subprocess.call(["python", module]) == 1: + raise SystemExit("Module test failed") + +cleanup(modules) diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/stage.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/stage.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/stage.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/stage.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,75 @@ +# +# test/stage.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from gittyup.objects import * +from util import touch, change + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "stage" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "stage.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + os.mkdir(DIR) + g = GittyupClient() + g.initialize_repository(DIR) + + touch(DIR + "/test1.txt") + touch(DIR + "/test2.txt") + + # Stage both files + g.stage([DIR+"/test1.txt", DIR+"/test2.txt"]) + st = g.status() + assert (st[0] == AddedStatus) + assert (st[1] == AddedStatus) + assert (st[0].is_staged) + + # Unstage both files + g.unstage([DIR+"/test1.txt", DIR+"/test2.txt"]) + st = g.status() + assert (st[0] == UntrackedStatus) + assert (st[1] == UntrackedStatus) + assert (not st[0].is_staged) + + # Untracked files should not be staged + g.stage_all() + st = g.status() + assert (st[0] == UntrackedStatus) + assert (st[1] == UntrackedStatus) + + # test1.txt is changed, so it should get staged and set as Modified + g.stage([DIR+"/test1.txt"]) + g.commit("Test commit") + change(DIR+"/test1.txt") + st = g.status() + assert (st[0] == ModifiedStatus) + g.stage_all() + st = g.status() + assert (st[0] == ModifiedStatus) + assert (g.is_staged(DIR+"/" + st[0].path)) + assert (not g.is_staged(DIR+"/" + st[1].path)) + + # Unstage all staged files + g.unstage_all() + st = g.status() + assert (not g.is_staged(DIR+"/" + st[0].path)) + assert (not g.is_staged(DIR+"/" + st[1].path)) + assert (st[0] == ModifiedStatus) + assert (st[1] == UntrackedStatus) + + print "stage.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/tag.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/tag.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/tag.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/tag.py 2010-10-06 12:05:43.000000000 +0000 @@ -0,0 +1,43 @@ +# +# test/stage.py +# + +import os +from shutil import rmtree +from sys import argv +from optparse import OptionParser + +from gittyup.client import GittyupClient +from gittyup.objects import * +from util import touch, change + +parser = OptionParser() +parser.add_option("-c", "--cleanup", action="store_true", default=False) +(options, args) = parser.parse_args(argv) + +DIR = "tag" + +if options.cleanup: + rmtree(DIR, ignore_errors=True) + + print "tag.py clean" +else: + if os.path.isdir(DIR): + raise SystemExit("This test script has already been run. Please call this script with --cleanup to start again") + + os.mkdir(DIR) + g = GittyupClient() + g.initialize_repository(DIR) + + touch(DIR + "/test1.txt") + touch(DIR + "/test2.txt") + + g.stage([DIR+"/test1.txt", DIR+"/test2.txt"]) + commit_id = g.commit("First commit", commit_all=True) + + tag_id = g.tag("tag1", "Tagging as tag1", track=True) + assert (g.is_tracking("refs/tags/tag1")) + + assert (len(g.tag_list()) == 1) + + print "tag.py pass" diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/util.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/util.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/tests/util.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/tests/util.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,14 @@ +# +# util.py +# + +import os + +def touch(fname, times = None): + with file(fname, 'a'): + os.utime(fname, times) + +def change(path): + f = open(path, "a") + f.write("1") + f.close() diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/util.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/util.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/gittyup/util.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/gittyup/util.py 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,66 @@ +# +# util.py +# + +import os + +def splitall(path): + """Split a path into all of its parts. + + From: Python Cookbook, Credit: Trent Mick + """ + allparts = [] + while 1: + parts = os.path.split(path) + if parts[0] == path: + allparts.insert(0, parts[0]) + break + elif parts[1] == path: + allparts.insert(0, parts[1]) + break + else: + path = parts[0] + allparts.insert(0, parts[1]) + return allparts + +def relativepath(fromdir, tofile): + """Find relative path from 'fromdir' to 'tofile'. + + An absolute path is returned if 'fromdir' and 'tofile' + are on different drives. Martin Bless, 2004-03-22. + """ + f1name = os.path.abspath(tofile) + if os.path.splitdrive(f1name)[0]: + hasdrive = True + else: + hasdrive = False + f1basename = os.path.basename(tofile) + f1dirname = os.path.dirname(f1name) + f2dirname = os.path.abspath(fromdir) + f1parts = splitall(f1dirname) + f2parts = splitall(f2dirname) + if hasdrive and (f1parts[0].lower() <> f2parts[0].lower()): + "Return absolute path since we are on different drives." + return f1name + while f1parts and f2parts: + if hasdrive: + if f1parts[0].lower() <> f2parts[0].lower(): + break + else: + if f1parts[0] <> f2parts[0]: + break + del f1parts[0] + del f2parts[0] + result = ['..' for part in f2parts] + result.extend(f1parts) + result.append(f1basename) + return os.sep.join(result) + +def get_transport_and_path(uri): + from dulwich.client import TCPGitClient, SSHGitClient, SubprocessGitClient + for handler, transport in (("git://", TCPGitClient), ("git+ssh://", SSHGitClient)): + if uri.startswith(handler): + host, path = uri[len(handler):].split("/", 1) + return transport(host), "/"+path + # if its not git or git+ssh, try a local url.. + return SubprocessGitClient(), uri diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/__init__.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/__init__.py 2011-03-03 12:58:03.000000000 +0000 @@ -0,0 +1,942 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +""" +Concrete VCS implementation for Git functionality. +""" + +import os.path +from datetime import datetime + +from gittyup.client import GittyupClient +import gittyup.objects + +import rabbitvcs.util.helper + +import rabbitvcs.vcs +import rabbitvcs.vcs.status +import rabbitvcs.vcs.log +from rabbitvcs.vcs.branch import BranchEntry +from rabbitvcs.util.log import Log + +log = Log("rabbitvcs.vcs.git") + +from rabbitvcs import gettext +_ = gettext.gettext + +class Revision: + """ + Implements a simple revision object as a wrapper around the gittyup revision + object. This allows us to provide a standard interface to the object data. + """ + + def __init__(self, kind, value=None): + self.kind = kind.upper() + self.value = value + + if self.kind == "HEAD": + self.value = "HEAD" + + self.is_revision_object = True + + def __unicode__(self): + if self.value: + return unicode(self.value) + else: + return self.kind + + def short(self): + if self.value: + return unicode(self.value)[0:7] + else: + return self.kind + + def __str__(self): + return self.__unicode__() + + def __repr__(self): + return self.__unicode__() + + def primitive(self): + return self.value + +class Git: + STATUS = { + "normal": gittyup.objects.NormalStatus, + "added": gittyup.objects.AddedStatus, + "renamed": gittyup.objects.RenamedStatus, + "removed": gittyup.objects.RemovedStatus, + "modified": gittyup.objects.ModifiedStatus, + "killed": gittyup.objects.KilledStatus, + "untracked": gittyup.objects.UntrackedStatus, + "missing": gittyup.objects.MissingStatus + } + + STATUS_REVERSE = { + gittyup.objects.NormalStatus: "normal", + gittyup.objects.AddedStatus: "added", + gittyup.objects.RenamedStatus: "renamed", + gittyup.objects.RemovedStatus: "removed", + gittyup.objects.ModifiedStatus: "modified", + gittyup.objects.KilledStatus: "killed", + gittyup.objects.UntrackedStatus: "untracked", + gittyup.objects.MissingStatus: "missing" + } + + STATUSES_FOR_REVERT = [ + "missing", + "renamed", + "modified", + "removed" + ] + + STATUSES_FOR_COMMIT = [ + "untracked", + "missing", + "renamed", + "modified", + "added", + "removed" + ] + + STATUSES_FOR_STAGE = [ + "untracked" + ] + + STATUSES_FOR_UNSTAGE = [ + "added" + ] + + def __init__(self, repo=None): + self.vcs = rabbitvcs.vcs.VCS_GIT + self.interface = "gittyup" + if repo: + self.client = GittyupClient(repo) + else: + self.client = GittyupClient() + + self.cache = rabbitvcs.vcs.status.StatusCache() + + def set_repository(self, path): + self.client.set_repository(path) + self.config = self.client.config + + def get_repository(self): + return self.client.get_repository() + + def find_repository_path(self, path): + return self.client.find_repository_path(path) + + # + # Status Methods + # + + def statuses(self, path, recurse=False, invalidate=False): + """ + Generates a list of GittyupStatus objects for the specified file. + + @type path: string + @param path: The file to look up. If the file is a directory, it will + return a recursive list of child path statuses + + """ + + if path in self.cache: + if invalidate: + del self.cache[path] + else: + return self.cache.find_path_statuses(path) + + gittyup_statuses = self.client.status(path) + + if not len(gittyup_statuses): + return [rabbitvcs.vcs.status.Status.status_unknown(path)] + else: + statuses = [] + for st in gittyup_statuses: + # gittyup returns status paths relative to the repository root + # so we need to convert the path to an absolute path + st.path = self.client.get_absolute_path(st.path) + + rabbitvcs_status = rabbitvcs.vcs.status.GitStatus(st) + self.cache[st.path] = rabbitvcs_status + + statuses.append(rabbitvcs_status) + return statuses + + def status(self, path, summarize=True, invalidate=False): + if path in self.cache: + if invalidate: + del self.cache[path] + else: + st = self.cache[path] + if summarize: + st.summary = st.single + return st + + all_statuses = self.statuses(path, invalidate=invalidate) + + if summarize: + path_status = None + for st in all_statuses: + if st.path == path: + path_status = st + break + + if path_status: + path_status.summary = path_status.single + else: + path_status = rabbitvcs.vcs.status.Status.status_unknown(path) + else: + path_status = all_statuses[0] + + return path_status + + def is_working_copy(self, path): + if (os.path.isdir(path) and + os.path.isdir(os.path.join(path, ".git"))): + return True + return False + + def is_in_a_or_a_working_copy(self, path): + if self.is_working_copy(path): + return True + + return (self.find_repository_path(os.path.split(path)[0]) != "") + + def is_versioned(self, path): + if self.is_working_copy(path): + return True + + st = self.status(path) + try: + return st.is_versioned() + except Exception, e: + log.error(e) + return False + + return False + + def is_locked(self, path): + return False + + def get_items(self, paths, statuses=[]): + """ + Retrieves a list of files that have one of a set of statuses + + @type paths: list + @param paths: A list of paths or files. + + @type statuses: list + @param statuses: A list of statuses. + + @rtype: list + @return: A list of GittyupStatus objects. + + """ + + if paths is None: + return [] + + items = [] + for path in paths: + st = self.statuses(path, invalidate=True) + for st_item in st: + if st_item.content == "modified" and os.path.isdir(st_item.path): + continue + + if st_item.content in statuses or len(statuses) == 0: + items.append(st_item) + + return items + + def revision(self, value): + """ + Create a revision object usable by pysvn + + @type kind: string + @param kind: HEAD or a sha1 hash + + @type value: integer + @param value: Used for kind=number, specifies the revision hash. + + @rtype: Revision object + @return: A Revision object. + + """ + if value is None: + return Revision("WORKING") + + value_upper = value.upper() + if value_upper == "HEAD" or value_upper == "BASE": + return Revision("HEAD") + elif value_upper == "WORKING": + return Revision("WORKING") + else: + return Revision("hash", value) + + def is_tracking(self, name): + return self.client.is_tracking("refs/heads/%s" % name) + + + # + # Action Methods + # + + def initialize_repository(self, path, bare=False): + """ + Initialize a Git repository + + @type path: string + @param path: The folder to initialize as a repository + + @type bare: boolean + @param bare: Whether the repository should be "bare" or not + + """ + + return self.client.initialize_repository(path, bare) + + def stage(self, paths): + """ + Stage files to be committed or tracked + + @type paths: list + @param paths: A list of files + + """ + + return self.client.stage(paths) + + def stage_all(self): + """ + Stage all files in a repository to be committed or tracked + + """ + + return self.client.stage_all() + + def unstage(self, paths): + """ + Unstage files so they are not committed or tracked + + @type paths: list + @param paths: A list of files + + """ + + return self.client.unstage(paths) + + def unstage_all(self): + """ + Unstage all files so they are not committed or tracked + + @type paths: list + @param paths: A list of files + + """ + + return self.client.unstage_all() + + def branch(self, name, revision=Revision("head"), track=False): + """ + Create a new branch + + @type name: string + @param name: The name of the new branch + + @type revision: git.Revision + @param revision: A revision to branch from. + + @type track: boolean + @param track: Whether or not to track the new branch, or just create it + + """ + + return self.client.branch(name, revision.primitive(), track) + + def branch_delete(self, name): + """ + Delete a branch + + @type name: string + @param name: The name of the branch + + """ + + return self.client.branch_delete(name) + + def branch_rename(self, old_name, new_name): + """ + Rename a branch + + @type old_name: string + @param old_name: The name of the branch to be renamed + + @type new_name: string + @param new_name: The name of the new branch + + """ + + return self.client.branch_rename(old_name, new_name) + + def branch_list(self, revision=None): + """ + List all branches + + """ + + revision_str = None + if revision: + revision_str = revision.primitive() + + results = self.client.branch_list(revision_str) + branches = [] + for result in results: + branches.append(BranchEntry( + result["name"], + result["tracking"], + result["revision"], + result["message"] + )) + + return branches + + def checkout(self, paths=[], revision=Revision("HEAD")): + """ + Checkout a series of paths from a tree or commit. If no tree or commit + information is given, it will check out the files from head. If no + paths are given, all files will be checked out from head. + + @type paths: list + @param paths: A list of files to checkout + + @type revision: git.Revision + @param revision: The revision object or branch to checkout + + """ + + return self.client.checkout(paths, revision.primitive()) + + def clone(self, host, path, bare=False, origin="origin"): + """ + Clone a repository + + @type host: string + @param host: The url of the git repository + + @type path: string + @param path: The path to clone to + + @type bare: boolean + @param bare: Create a bare repository or not + + @type origin: string + @param origin: Specify the origin of the repository + + """ + + return self.client.clone(host, path, bare, origin) + + def commit(self, message, parents=None, committer=None, commit_time=None, + commit_timezone=None, author=None, author_time=None, + author_timezone=None, encoding=None, commit_all=False): + """ + Commit staged files to the local repository + + @type message: string + @param message: The log message + + @type parents: list + @param parents: A list of parent SHAs. Defaults to head. + + @type committer: string + @param committer: The person committing. Defaults to + "user.name " + + @type commit_time: int + @param commit_time: The commit time. Defaults to time.time() + + @type commit_timezone: int + @param commit_timezone: The commit timezone. + Defaults to (-1 * time.timezone) + + @type author: string + @param author: The author of the file changes. Defaults to + "user.name " + + @type author_time: int + @param author_time: The author time. Defaults to time.time() + + @type author_timezone: int + @param author_timezone: The author timezone. + Defaults to (-1 * time.timezone) + + @type encoding: string + @param encoding: The encoding of the commit. Defaults to UTF-8. + + @type commit_all: boolean + @param commit_all: Stage all changed files before committing + + """ + + return self.client.commit(message, parents, committer, commit_time, + commit_timezone, author, author_time, author_timezone, encoding, + commit_all) + + def remove(self, paths): + """ + Remove path from the repository. Also deletes the local file. + + @type paths: list + @param paths: A list of paths to remove + + """ + + return self.client.remove(paths) + + def move(self, source, dest): + """ + Move a file within the repository + + @type source: string + @param source: The source file + + @type dest: string + @param dest: The destination. If dest exists as a directory, source + will be added as a child. Otherwise, source will be renamed to + dest. + + """ + + return self.client.move(source, dest) + + def pull(self, repository="origin", refspec="master"): + """ + Fetch objects from a remote repository and merge with the local + repository + + @type repository: string + @param repository: The name of the repository + + @type refspec: string + @param refspec: The branch name to pull from + + """ + + return self.client.pull(repository, refspec) + + def push(self, repository="origin", refspec="master"): + """ + Push objects from the local repository into the remote repository + and merge them. + + @type repository: string + @param repository: The name of the repository + + @type refspec: string + @param refspec: The branch name to pull from + + """ + + return self.client.push(repository, refspec) + + def fetch(self, host): + """ + Fetch objects from a remote repository. This will not merge the files + into the local working copy, use pull for that. + + @type host: string + @param host: The git url from which to fetch + + """ + + return self.client.fetch(host) + + def merge(self, branch1, branch2): + return self.client.merge(branch1.primitive(), branch2.primitive()) + + def remote_add(self, name, host): + """ + Add a remote repository + + @type name: string + @param name: The name to give to the remote repository + + @type host: string + @param host: The git url to add + + """ + + return self.client.remote_add(name, host) + + def remote_delete(self, name): + """ + Remove a remote repository + + @type name: string + @param name: The name of the remote repository to remove + + """ + + return self.client.remote_delete(name) + + def remote_rename(self, current_name, new_name): + """ + Rename a remote repository + + @type current_name: string + @param current_name: The current name of the repository + + @type new_name: string + @param new_name: The name to give to the remote repository + + """ + + return self.client.remote_rename(current_name, new_name) + + def remote_set_url(self, name, url): + """ + Change a remote repository's url + + @type name: string + @param name: The name of the repository + + @type url: string + @param url: The url for the repository + + """ + + return self.client.remote_set_url(name, url) + + def remote_list(self): + """ + Return a list of the remote repositories + + @rtype list + @return A list of dicts with keys: remote, url, fetch + + """ + + return self.client.remote_list() + + def tag(self, name, message, revision): + """ + Create a tag object + + @type name: string + @param name: The name to give the tag + + @type message: string + @param message: A log message + + @type revision: git.Revision + @param revision: The revision to tag. Defaults to HEAD + + """ + + return self.client.tag(name, message, revision.primitive()) + + def tag_delete(self, name): + """ + Delete a tag + + @type name: string + @param name: The name of the tag to delete + + """ + + return self.client.tag_delete(name) + + def tag_list(self): + """ + Return a list of Tag objects + + """ + + return self.client.tag_list() + + + def log(self, path=None, skip=0, limit=None, revision=Revision("HEAD"), showtype="all"): + """ + Returns a revision history list + + @type path string + @param path If a path is specified, return commits that contain + changes to the specified path only + + @type revision git.Revision + @param revision Determines which branch to find commits for + + @type start_point sha1 hash string + @param start_point Start at a given revision + + @type limit int + @param limit If given, returns a limited number of commits + + @type refspec string + @param refspec Return commits in this refspec only + + @type showtype string + @type showtype Determines which revisions to show. "all" shows all revisions, + "branch" shows just the branch given in refspec + + @returns A list of commits + + """ + + # The strptime method relies on locales to work, and may not work with non en_US locales + # Temporarily change the locale to en_US so strptime can work consistently + # Then change it back at the end of the method + import locale + current_locale = locale.getlocale() + if current_locale[0] is not None: + locale.setlocale(locale.LC_ALL, "C") + + items = self.client.log(path, skip, limit, revision.primitive(), showtype) + returner = [] + for item in items: + revision = self.revision(item["commit"]) + date = datetime.strptime(item["commit_date"][0:-6], "%a %b %d %H:%M:%S %Y") + + author = _("(no author)") + if "committer" in item: + author = item["committer"] + pos = author.find("<") + if pos != -1: + author = author[0:pos-1] + + message = "" + if "message" in item: + message = item["message"] + + changed_paths = [] + if "changed_paths" in item: + for changed_path in item["changed_paths"]: + action = "+%s/-%s" % (changed_path["additions"], changed_path["removals"]) + + changed_paths.append(rabbitvcs.vcs.log.LogChangedPath( + changed_path["path"], + action, + "", "" + )) + + parents = [] + if "parents" in item: + for parent in item["parents"]: + parents.append(self.revision(parent)) + + head = False + if item["commit"] == self.client.head(): + head = True + + returner.append(rabbitvcs.vcs.log.Log( + date, + revision, + author, + message, + changed_paths, + parents, + head + )) + + locale.setlocale(locale.LC_ALL, current_locale) + + return returner + + def diff_summarize(self, path1, revision_obj1, path2=None, revision_obj2=None): + """ + Returns a diff summary between the path(s)/revision(s) + + @type path1: string + @param path1: The absolute path to a file + + @type revision_obj1: git.Revision() + @param revision_obj1: The revision object for path1 + + @type path2: string + @param path2: The absolute path to a file + + @type revision_obj2: git.Revision() + @param revision_obj2: The revision object for path2 + + """ + + summary_raw = self.client.diff_summarize(path1, revision_obj1.primitive(), + path2, revision_obj2.primitive()) + + summary = [] + for item in summary_raw: + summary.append(rabbitvcs.vcs.log.LogChangedPath(item["path"], item["action"], "", "")) + + return summary + + def annotate(self, path, revision_obj=Revision("head")): + """ + Returns an annotation for a specified file + + @type path: string + @param path: The absolute path to a tracked file + + @type revision: string + @param revision: HEAD or a sha1 hash + + """ + + return self.client.annotate(path, revision_obj.primitive()) + + def show(self, path, revision_obj): + """ + Returns a particular file at a given revision object. + + @type path: string + @param path: The absolute path to a file + + @type revision_obj: git.Revision() + @param revision_obj: The revision object for path + + """ + + return self.client.show(path, revision_obj.primitive()) + + def diff(self, path1, revision_obj1, path2=None, revision_obj2=None): + """ + Returns the diff between the path(s)/revision(s) + + @type path1: string + @param path1: The absolute path to a file + + @type revision_obj1: git.Revision() + @param revision_obj1: The revision object for path1 + + @type path2: string + @param path2: The absolute path to a file + + @type revision_obj2: git.Revision() + @param revision_obj2: The revision object for path2 + + """ + + return self.client.diff(path1, revision_obj1.primitive(), path2, + revision_obj2.primitive()) + + def apply_patch(self, patch_file, base_dir): + """ + Applies a patch created for this WC. + + @type patch_file: string + @param patch_file: the path to the patch file + + @type base_dir: string + @param base_dir: the base directory from which to interpret the paths in + the patch file + """ + + any_failures = False + + for file, success, rej_file in rabbitvcs.util.helper.parse_patch_output(patch_file, base_dir, 1): + + fullpath = os.path.join(base_dir, file) + + event_dict = dict() + + event_dict["path"] = file + event_dict["mime_type"] = "" # meh + + if success: + event_dict["action"] = _("Patched") # not in pysvn, but + # we have a fallback + else: + any_failures = True + event_dict["action"] = _("Patch Failed") # better wording needed? + + if rej_file: + rej_info = { + "path" : rej_file, + "action" : _("Rejected Patch"), + "mime_type" : None + } + + if self.client.callback_notify: + self.client.callback_notify(event_dict) + if rej_file: + self.client.callback_notify(rej_info) + + def export(self, path, dest_path, revision): + """ + Exports a file or directory from a given revision + + @type path: string + @param path: The source file/folder to export + + @type dest_path: string + @param dest_path: The path to put the exported file(s) + + @type revision: git.Revision + @param revision: The revision/tree/commit of the source file being exported + + """ + + return self.client.export(path, dest_path, revision.primitive()) + + def clean(self, path, remove_dir=True, remove_ignored_too=False, + remove_only_ignored=False, dry_run=False, force=True): + + return self.client.clean(path, remove_dir, remove_ignored_too, + remove_only_ignored, dry_run, force) + + def reset(self, path, revision, type=None): + """ + Reset repository to a specified state + + @type path: string + @param path: The repository file/folder + + @type revision: git.Revision + @param revision: The revision/tree/commit to reset to + + @type type: string + @param type: The type of reset to do. Can be mixed, soft, hard, merge + """ + + return self.client.reset(path, revision.primitive(), type) + + def get_ignore_files(self, path): + paths = [] + paths.append(self.client.get_local_ignore_file(path)) + paths += self.client.get_global_ignore_files() + + return paths + + def get_config_files(self, path): + paths = [self.client.get_local_config_file()] + + return paths + + def set_callback_notify(self, func): + self.client.set_callback_notify(func) + + def set_callback_get_user(self, func): + self.client.set_callback_get_user(func) + + def set_callback_get_cancel(self, func): + self.client.set_callback_get_cancel(func) diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/git/README rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/README --- rabbitvcs-0.13.1/rabbitvcs/vcs/git/README 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/git/README 2010-05-28 18:39:10.000000000 +0000 @@ -0,0 +1,7 @@ +Hopefully a better library will come along for Git eventually, but in the meantime +this should supply the basic functionality needed to work with Git. + +Dependencies +------------ +* dulwich >= 0.4.1 +* python >= 2.4 diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/__init__.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/__init__.py 2011-05-19 12:52:55.000000000 +0000 @@ -0,0 +1,203 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os.path +from rabbitvcs import gettext +_ = gettext.gettext + +from rabbitvcs.util.log import Log +logger = Log("rabbitvcs.vcs") + +EXT_UTIL_ERROR = _("The output from '%s' was not able to be processed.\n%s") + +VCS_SVN = 'svn' +VCS_GIT = 'git' +VCS_DUMMY = 'unknown' + +def guess(path): + # Determine the VCS instance based on the path + if path: + path_to_check = path + folders = { + ".svn": VCS_SVN, + ".git": VCS_GIT, + ".hg": VCS_DUMMY, + ".bzr": VCS_DUMMY, + ".CVS": VCS_DUMMY + } + + while path_to_check != "/" and path_to_check != "": + for folder, client in folders.items(): + if os.path.isdir(os.path.join(path_to_check, folder)): + cache = { + "vcs": client, + "repo_path": path_to_check + } + return cache + path_to_check = os.path.split(path_to_check)[0] + + return { + "vcs": VCS_DUMMY, + "repo_path": path + } + +class VCS: + clients = {} + + def __init__(self): + pass + + def dummy(self): + if VCS_DUMMY in self.clients: + return self.clients[VCS_DUMMY] + else: + from rabbitvcs.vcs.dummy import Dummy + self.clients[VCS_DUMMY] = Dummy() + return self.clients[VCS_DUMMY] + + def svn(self): + if VCS_SVN in self.clients: + return self.clients[VCS_SVN] + else: + try: + from rabbitvcs.vcs.svn import SVN + self.clients[VCS_SVN] = SVN() + return self.clients[VCS_SVN] + except Exception, e: + logger.debug("Unable to load SVN module: %s" % e) + self.clients[VCS_SVN] = self.dummy() + return self.clients[VCS_SVN] + + def git(self, path=None, is_repo_path=False): + if VCS_GIT in self.clients: + git = self.clients[VCS_GIT] + + if path: + if is_repo_path: + git.set_repository(path) + else: + repo_path = git.find_repository_path(path) + git.set_repository(repo_path) + + return git + else: + try: + from rabbitvcs.vcs.git import Git + git = Git() + + if path: + if is_repo_path: + git.set_repository(path) + else: + repo_path = git.find_repository_path(path) + git.set_repository(repo_path) + + self.clients[VCS_GIT] = git + return self.clients[VCS_GIT] + except Exception, e: + import traceback + traceback.print_exc() + logger.debug("Unable to load Git module: %s" % e) + self.clients[VCS_GIT] = self.dummy() + return self.clients[VCS_GIT] + + def client(self, path, vcs=None): + # Determine the VCS instance based on the vcs parameter + if vcs: + if vcs == VCS_SVN: + return self.svn() + elif vcs == VCS_GIT: + return self.git(path) + + guess = self.guess(path) + if guess["vcs"] == VCS_GIT: + return self.git(guess["repo_path"], is_repo_path=False) + elif guess["vcs"] == VCS_SVN: + return self.svn() + else: + return self.dummy() + + def guess(self, path): + return guess(path) + + # Methods that call client methods + + def statuses(self, path, recurse=True, invalidate=False): + client = self.client(path) + return client.statuses(path, recurse=recurse, invalidate=invalidate) + + def status(self, path, summarize=True, invalidate=False): + client = self.client(path) + return client.status(path, summarize, invalidate) + + def is_working_copy(self, path): + client = self.client(path) + return client.is_working_copy(path) + + def is_in_a_or_a_working_copy(self, path): + client = self.client(path) + ret = client.is_in_a_or_a_working_copy(path) + return ret + + def is_versioned(self, path): + client = self.client(path) + return client.is_versioned(path) + + def is_locked(self, path): + client = self.client(path) + return client.is_locked(path) + + def get_items(self, paths, statuses=[]): + client = self.client(paths[0]) + return client.get_items(paths, statuses) + + def statuses_for_commit(self, paths): + client = self.client(paths[0]) + return client.STATUSES_FOR_COMMIT + + def statuses_for_revert(self, paths): + client = self.client(paths[0]) + return client.STATUSES_FOR_REVERT + +def create_vcs_instance(path=None, vcs=None): + """ + Create a VCS instance based on the working copy path + """ + return VCS() + +def guess_vcs(path): + vcs = VCS() + return vcs.guess(path) + +class ExternalUtilError(Exception): + """ Represents an error caused by unexpected output from an external + program. + """ + + def __init__(self, program, output): + """ Initialises the error with the external tool and the unexpected + output. + """ + Exception.__init__(self, + EXT_UTIL_ERROR % (program, output)) + self.program = program + self.output = output diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/log.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/log.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/log.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/log.py 2010-11-21 21:46:20.000000000 +0000 @@ -0,0 +1,64 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import rabbitvcs.util.helper +import rabbitvcs.vcs + +DATETIME_FORMAT = rabbitvcs.util.helper.LOCAL_DATETIME_FORMAT + +class LogChangedPath: + path = "" + action = "" + copy_from_path = "" + copy_from_revision = "" + + def __init__(self, path, action, copy_from_path, copy_from_revision): + self.path = path + self.action = action + self.copy_from_path = copy_from_path + self.copy_from_revision = copy_from_revision + +class Log: + date = None + revision = None + author = None + message = None + parents = [] + head = False + + # A list of LogChangedFiles elements + changed_paths = [] + + def __init__(self, date, revision, author, message, changed_paths, parents=[], head=False): + self.date = date + self.revision = revision + self.author = author + self.message = message + self.changed_paths = changed_paths + self.parents = parents + self.head = head + + def get_date(self): + return self.date + + def set_date(self, date): + self.date = date diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/status.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/status.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/status.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/status.py 2010-12-28 17:04:41.000000000 +0000 @@ -0,0 +1,465 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2010 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +import os.path +import unittest + +from datetime import datetime + +import rabbitvcs.vcs + +from rabbitvcs.util.log import Log + +log = Log("rabbitvcs.vcs.status") + +from rabbitvcs import gettext +_ = gettext.gettext + +# These are the statuses that we might represent with icons +status_normal = 'normal' +status_modified = 'modified' +status_added = 'added' +status_deleted = 'deleted' +status_ignored = 'ignored' +status_read_only = 'read-only' +status_locked = 'locked' +status_unknown = 'unknown' +# Specifically: this means something IN A WORKING COPY but not added +status_unversioned = 'unversioned' +status_missing = 'missing' +status_replaced = 'replaced' +# "complicated" = anything we display with that exclamation mark icon +status_complicated = 'complicated' +status_calculating = 'calculating' +status_error = 'error' + +MODIFIED_CHILD_STATUSES = [ + status_modified, + status_added, + status_deleted, + status_missing, + status_replaced +] + +class StatusCache(object): + keys = [ + None, + status_normal, + status_modified, + status_added, + status_deleted, + status_ignored, + status_read_only, + status_locked, + status_unknown, + status_unversioned, + status_missing, + status_replaced, + status_complicated, + status_calculating, + status_error + ] + + authors = [] + revisions = [] + + def __init__(self): + self.cache = {} + + def __setitem__(self, path, status): + try: + content_index = self.keys.index(status.simple_content_status()) + metadata_index = self.keys.index(status.simple_metadata_status()) + + try: + author_index = self.authors.index(status.author) + except ValueError, e: + self.authors.append(status.author) + author_index = len(self.authors) -1 + + try: + revision_index = self.revisions.index(status.revision) + except ValueError, e: + self.revisions.append(status.revision) + revision_index = len(self.revisions) -1 + + self.cache[path] = ( + content_index, + metadata_index, + revision_index, + author_index, + status.date + ) + except Exception, e: + log.debug(e) + + def __getitem__(self, path): + try: + (content_index, metadata_index, revision_index, author_index, date) = self.cache[path] + + content = self.keys[content_index] + metadata = self.keys[metadata_index] + revision = self.revisions[revision_index] + author = self.authors[author_index] + + return Status(path, content, metadata, revision=revision, + author=author, date=date) + except Exception, e: + log.debug(e) + + def __delitem__(self, path): + try: + del self.cache[path] + except KeyError, e: + log.debug(e) + + + def __contains__(self, path): + return path in self.cache + + def find_path_statuses(self, path): + statuses = [] + if os.path.isdir(path): + for key, value in self.cache.items(): + if key.startswith(path): + statuses.append(self.__getitem__(key)) + else: + statuses.append(self.__getitem__(path)) + + return statuses + +class Status(object): + + @staticmethod + def status_unknown(path): + return Status(path, status_unknown, summary = status_unknown) + + @staticmethod + def status_error(path): + return Status(path, status_error, summary = status_error) + + @staticmethod + def status_calc(path): + return Status(path, status_calculating, summary = status_calculating) + + vcs_type = rabbitvcs.vcs.VCS_DUMMY + + clean_statuses = ['unchanged'] + + content_status_map = None + metadata_status_map = None + + def __init__(self, path, content, metadata=None, summary=None, + revision=None, author=None, date=None): + + """ + The status objects accepts the following items + + @type path: string + @param path: The path to the item + + @type content: string + @param content: The content status + + @type metadata: string + @param metadata: The property status + + @type summary: string + @param summary: The summary status + + @type revision: string or int + @param revision: The last commit revision of the item + + @type author: string + @param author: The commit author + + @type date: int + @param date: The timestamp of the commit time + + """ + + self.path = path + self.content = content + self.metadata = metadata + self.remote_content = None + self.remote_metadata = None + self.single = self._make_single_status() + self.summary = summary + self.revision = revision + self.author = author + self.date = date + + def _make_single_status(self): + """ + Given our text_status and a prop_status, simplify to a single "simple" + status. If we don't know how to simplify our particular combination of + status, call it an error. + """ + # Content status dominates + single = self.simple_content_status() or status_error + if single in Status.clean_statuses: + if self.metadata: + single = self.simple_metadata_status() or status_error + return single + + def simple_content_status(self): + if self.content_status_map: + return self.content_status_map.get(self.content) + else: + return self.content + + def simple_metadata_status(self): + if self.metadata and self.metadata_status_map: + return self.metadata_status_map.get(self.metadata) + else: + return self.metadata + + def make_summary(self, child_statuses = []): + """ Summarises statuses for directories. + """ + summary = status_unknown + + status_set = set([st.single for st in child_statuses]) + + if not status_set: + self.summary = self.single + + if status_complicated in status_set: + self.summary = status_complicated + elif self.single in ["added", "modified", "deleted"]: + # These take priority over child statuses + self.summary = self.single + elif len(set(MODIFIED_CHILD_STATUSES) & status_set): + self.summary = status_modified + else: + self.summary = self.single + + return summary + + def is_versioned(self): + return self.single is not status_unversioned + + def is_modified(self): + # This may need to be more sophisticated... eg. is read-only modified? + # Unknown? etc... + return self.single is not status_normal + + def has_modified(self): + # Includes self being modified! + return self.summary is not status_normal + + def __repr__(self): + return "<%s %s (%s) %s/%s>" % (_("RabbitVCS status for"), + self.path, + self.vcs_type, + self.simple_content_status(), + self.simple_metadata_status()) + + def __getstate__(self): + attrs = self.__dict__.copy() + attrs['__type__'] = type(self).__name__ + attrs['__module__'] = type(self).__module__ + return attrs + + def __setstate__(self, state_dict): + del state_dict['__type__'] + del state_dict['__module__'] + self.__dict__ = state_dict + +class SVNStatus(Status): + + vcs_type = rabbitvcs.vcs.VCS_SVN + + content_status_map = { + 'normal': status_normal, + 'added': status_added, + 'missing': status_missing, + 'unversioned': status_unversioned, + 'deleted': status_deleted, + 'replaced': status_modified, + 'modified': status_modified, + 'merged': status_modified, + 'conflicted': status_complicated, + 'ignored': status_ignored, + 'obstructed': status_complicated, + # FIXME: is this the best representation of 'externally populated'? + 'external': status_normal, + 'incomplete': status_complicated + } + + metadata_status_map = { + 'normal': status_normal, + 'none': status_normal, + 'modified': status_modified + } + +#external - an unversioned path populated by an svn:external property +#incomplete - a directory doesn't contain a complete entries list + + def __init__(self, pysvn_status): + revision = author = date = None + if pysvn_status.entry: + revision = int(pysvn_status.entry.commit_revision.number) + author = pysvn_status.entry.commit_author + date = int(pysvn_status.entry.commit_time) + + # There is a potential problem here: I'm pretty sure that PySVN statuses + # do NOT have translatable representations, so this will always come out + # to be 'normal', 'modified' etc + Status.__init__( + self, + pysvn_status.path, + content=str(pysvn_status.text_status), + metadata=str(pysvn_status.prop_status), + revision=revision, + author=author, + date=date + ) + + # self.remote_content = getattr(pysvn_status, "repos_text_status", None) + # self.remote_metadata = getattr(pysvn_status, "repos_prop_status", None) + + self.remote_content = str(pysvn_status.repos_text_status) + self.remote_metadata = str(pysvn_status.repos_prop_status) + +class GitStatus(Status): + + vcs_type = 'git' + + content_status_map = { + 'normal': status_normal, + 'added': status_added, + 'missing': status_missing, + 'untracked': status_unversioned, + 'removed': status_deleted, + 'modified': status_modified, + 'renamed': status_modified, + 'ignored': status_ignored + } + + metadata_status_map = { + 'normal': status_normal, + None: status_normal + } + + def __init__(self, gittyup_status): + super(GitStatus, self).__init__( + gittyup_status.path, + content=str(gittyup_status.identifier), + metadata=None) + +STATUS_TYPES = [ + Status, + SVNStatus, + GitStatus +] + +class TestStatusObjects(unittest.TestCase): + + base = "/path/to/test" + + children = [ + os.path.join(base, chr(x)) for x in range(97,123) + ] + + def testsingle_clean(self): + status = Status(self.base, status_normal) + self.assertEqual(status.single, status_normal) + + def testsingle_changed(self): + status = Status(self.base, status_modified) + self.assertEqual(status.single, status_modified) + + def testsingle_propclean(self): + status = Status(self.base, status_normal, status_normal) + self.assertEqual(status.single, status_normal) + + def testsingle_propchanged(self): + status = Status(self.base, status_normal, status_modified) + self.assertEqual(status.single, status_modified) + + def testsummary_clean(self): + top_status = Status(self.base, status_normal) + child_sts = [Status(path, status_normal) for path in self.children] + top_status.make_summary(child_sts) + self.assertEqual(top_status.summary, status_normal) + + def testsummary_changed(self): + top_status = Status(self.base, status_normal) + child_sts = [Status(path, status_normal) for path in self.children] + + child_sts[1] = Status(child_sts[1].path, status_modified) + + top_status.make_summary(child_sts) + self.assertEqual(top_status.summary, status_modified) + + def testsummary_added(self): + top_status = Status(self.base, status_normal) + child_sts = [Status(path, status_normal) for path in self.children] + + child_sts[1] = Status(child_sts[1].path, status_added) + + top_status.make_summary(child_sts) + self.assertEqual(top_status.summary, status_modified) + + def testsummary_complicated(self): + top_status = Status(self.base, status_normal) + child_sts = [Status(path, status_normal) for path in self.children] + + child_sts[1] = Status(child_sts[1].path, status_complicated) + + top_status.make_summary(child_sts) + self.assertEqual(top_status.summary, status_complicated) + + def testsummary_propchange(self): + top_status = Status(self.base, status_normal) + child_sts = [Status(path, status_normal) for path in self.children] + + child_sts[1] = Status(child_sts[1].path, + status_normal, + status_modified) + + top_status.make_summary(child_sts) + self.assertEqual(top_status.summary, status_modified) + + def testsummary_bothchange(self): + top_status = Status(self.base, status_normal) + child_sts = [Status(path, status_normal) for path in self.children] + + child_sts[1] = Status(child_sts[1].path, + status_complicated, + status_modified) + + top_status.make_summary(child_sts) + self.assertEqual(top_status.summary, status_complicated) + + def testsummary_topadded(self): + top_status = Status(self.base, status_added) + child_sts = [Status(path, status_normal) for path in self.children] + + child_sts[1] = Status(child_sts[1].path, status_modified, status_modified) + + top_status.make_summary(child_sts) + self.assertEqual(top_status.summary, status_added) + +if __name__ == "__main__": + unittest.main() diff -Nru rabbitvcs-0.13.1/rabbitvcs/vcs/svn/__init__.py rabbitvcs-0.15.0.5/rabbitvcs/vcs/svn/__init__.py --- rabbitvcs-0.13.1/rabbitvcs/vcs/svn/__init__.py 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/rabbitvcs/vcs/svn/__init__.py 2011-01-13 14:58:11.000000000 +0000 @@ -0,0 +1,1699 @@ +# +# This is an extension to the Nautilus file manager to allow better +# integration with the Subversion source control system. +# +# Copyright (C) 2006-2008 by Jason Field +# Copyright (C) 2007-2008 by Bruce van der Kooij +# Copyright (C) 2008-2008 by Adam Plumb +# +# RabbitVCS 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 2 of the License, or +# (at your option) any later version. +# +# RabbitVCS 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 RabbitVCS; If not, see . +# + +""" +Concrete VCS implementation for Subversion functionality. +""" +import subprocess +import os.path +from os.path import isdir, isfile, dirname, islink, realpath +from datetime import datetime + +import pysvn + +import rabbitvcs.vcs +import rabbitvcs.vcs.status +import rabbitvcs.vcs.log +import rabbitvcs.util.helper +from rabbitvcs.util.log import Log + +log = Log("rabbitvcs.vcs.svn") + +from rabbitvcs import gettext +_ = gettext.gettext + +# Extra "action" for "commit completed" +commit_completed = "commit_completed" + +class Revision: + """ + Implements a simple revision object as a wrapper around the pysvn revision + object. This allows us to provide a standard interface to the object data. + """ + + KINDS = { + "unspecified": pysvn.opt_revision_kind.unspecified, + "number": pysvn.opt_revision_kind.number, + "date": pysvn.opt_revision_kind.date, + "committed": pysvn.opt_revision_kind.committed, + "previous": pysvn.opt_revision_kind.previous, + "working": pysvn.opt_revision_kind.working, + "head": pysvn.opt_revision_kind.head, + "base": pysvn.opt_revision_kind.base + } + + def __init__(self, kind, value=None): + self.kind = unicode(kind).lower() + self.value = value + self.is_revision_object = True + + if self.value is None and self.kind in ("number", "date"): + self.kind = "head" + + self.__revision_kind = self.KINDS[self.kind] + self.__revision = None + + try: + if value is not None: + self.__revision = pysvn.Revision(self.__revision_kind, value) + else: + self.__revision = pysvn.Revision(self.__revision_kind) + except Exception, e: + log.exception(e) + + def __unicode__(self): + if self.value: + return unicode(self.value) + else: + return self.kind + + def short(self): + return self.__unicode__() + + def __str__(self): + return self.__unicode__() + + def __repr__(self): + return self.__unicode__() + + def primitive(self): + return self.__revision + +class SVN: + """ + + """ + + STATUS = { + "none" : pysvn.wc_status_kind.none, + "unversioned" : pysvn.wc_status_kind.unversioned, + "normal" : pysvn.wc_status_kind.normal, + "added" : pysvn.wc_status_kind.added, + "missing" : pysvn.wc_status_kind.missing, + "deleted" : pysvn.wc_status_kind.deleted, + "replaced" : pysvn.wc_status_kind.replaced, + "modified" : pysvn.wc_status_kind.modified, + "merged" : pysvn.wc_status_kind.merged, + "conflicted" : pysvn.wc_status_kind.conflicted, + "ignored" : pysvn.wc_status_kind.ignored, + "obstructed" : pysvn.wc_status_kind.obstructed, + "external" : pysvn.wc_status_kind.external, + "incomplete" : pysvn.wc_status_kind.incomplete + } + + STATUSES_FOR_COMMIT = map(str, + [ + pysvn.wc_status_kind.unversioned, + pysvn.wc_status_kind.added, + pysvn.wc_status_kind.deleted, + pysvn.wc_status_kind.replaced, + pysvn.wc_status_kind.modified, + pysvn.wc_status_kind.missing, + pysvn.wc_status_kind.obstructed + ]) + + STATUSES_FOR_REVERT = map(str, + [ + pysvn.wc_status_kind.missing, + pysvn.wc_status_kind.added, + pysvn.wc_status_kind.modified, + pysvn.wc_status_kind.deleted + ]) + + STATUSES_FOR_ADD = map(str, + [ + pysvn.wc_status_kind.unversioned, + pysvn.wc_status_kind.obstructed + ]) + + STATUSES_FOR_RESOLVE = map(str, + [ + pysvn.wc_status_kind.conflicted + ]) + + STATUSES_FOR_CHECK = map(str, + [ + pysvn.wc_status_kind.added, + pysvn.wc_status_kind.deleted, + pysvn.wc_status_kind.replaced, + pysvn.wc_status_kind.modified, + pysvn.wc_status_kind.missing, + pysvn.wc_status_kind.conflicted, + ]) + + PROPERTIES = { + "executable": "svn:executable", + "mime-type": "svn:mime-type", + "ignore": "svn:ignore", + "keywords": "svn:keywords", + "eol-style": "svn:eol-style", + "externals": "svn:externals", + "special": "svn:special" + } + + NOTIFY_ACTIONS = { + pysvn.wc_notify_action.add: _("Added"), + pysvn.wc_notify_action.copy: _("Copied"), + pysvn.wc_notify_action.delete: _("Deleted"), + pysvn.wc_notify_action.restore: _("Restored"), + pysvn.wc_notify_action.revert: _("Reverted"), + pysvn.wc_notify_action.failed_revert: _("Failed Revert"), + pysvn.wc_notify_action.resolved: _("Resolved"), + pysvn.wc_notify_action.skip: _("Skipped"), + pysvn.wc_notify_action.update_delete: _("Deleted"), + pysvn.wc_notify_action.update_add: _("Added"), + pysvn.wc_notify_action.update_update: _("Updated"), + pysvn.wc_notify_action.update_completed: _("Completed"), + pysvn.wc_notify_action.update_external: _("External"), + pysvn.wc_notify_action.status_completed: _("Completed"), + pysvn.wc_notify_action.status_external: _("External"), + pysvn.wc_notify_action.commit_modified: _("Modified"), + pysvn.wc_notify_action.commit_added: _("Added"), + pysvn.wc_notify_action.commit_deleted: _("Deleted"), + pysvn.wc_notify_action.commit_replaced: _("Replaced"), + pysvn.wc_notify_action.commit_postfix_txdelta: _("Changed"), + pysvn.wc_notify_action.annotate_revision: _("Annotated"), + pysvn.wc_notify_action.locked: _("Locked"), + pysvn.wc_notify_action.unlocked: _("Unlocked"), + pysvn.wc_notify_action.failed_lock: _("Failed Lock"), + pysvn.wc_notify_action.failed_unlock: _("Failed Unlock") + } + + NOTIFY_ACTIONS_COMPLETE = [ + pysvn.wc_notify_action.status_completed, + pysvn.wc_notify_action.update_completed, + commit_completed + ] + + NOTIFY_STATES = { + pysvn.wc_notify_state.inapplicable: _("Inapplicable"), + pysvn.wc_notify_state.unknown: _("Unknown"), + pysvn.wc_notify_state.unchanged: _("Unchanged"), + pysvn.wc_notify_state.missing: _("Missing"), + pysvn.wc_notify_state.obstructed: _("Obstructed"), + pysvn.wc_notify_state.changed: _("Changed"), + pysvn.wc_notify_state.merged: _("Merged"), + pysvn.wc_notify_state.conflicted: _("Conflicted") + } + + NODE_KINDS_REVERSE = { + pysvn.node_kind.none: "none", + pysvn.node_kind.file: "file", + pysvn.node_kind.dir: "dir", + pysvn.node_kind.unknown: "unknown" + } + + def __init__(self): + self.client = pysvn.Client() + self.interface = "pysvn" + self.vcs = rabbitvcs.vcs.VCS_SVN + self.cache = rabbitvcs.vcs.status.StatusCache() + + def statuses(self, path, recurse=True, update=False, invalidate=False): + """ + + Look up the status for path. + + """ + + if path in self.cache: + if invalidate: + del self.cache[path] + else: + return self.cache.find_path_statuses(path) + + on_error = rabbitvcs.vcs.status.Status.status_unknown(path) + + if not self.is_in_a_or_a_working_copy(path): + return [on_error] + + depth = pysvn.depth.infinity if recurse else pysvn.depth.empty + + try: + pysvn_statuses = self.client.status(path, + depth=depth, + update=update) + if not len(pysvn_statuses): + # This is NOT in the PySVN documentation, but sometimes it + # returns an empty list if the file goes missing... + return [on_error] + else: + statuslist = [] + for st in pysvn_statuses: + rabbitvcs_status = rabbitvcs.vcs.status.SVNStatus(st) + self.cache[st.path] = rabbitvcs_status + statuslist.append(rabbitvcs_status) + + return statuslist + except pysvn.ClientError, ex: + # TODO: uncommenting these might not be a good idea + #~ traceback.print_exc() + log.debug("Exception occured in SVN.status() for %s" % path) + log.exception(ex) + return [on_error] + + def client_info(self, path): + if islink(path): + path = realpath(path) + return self.client.info(path) + + def status(self, path, summarize=True, invalidate=False): + if path in self.cache: + if invalidate: + del self.cache[path] + else: + st = self.cache[path] + if summarize: + st.summary = st.single + return st + + all_statuses = self.statuses(path, recurse=summarize) + + if summarize: + path_status = None + for st in all_statuses: + if st.path == path: + path_status = st + break + + path_status.make_summary(all_statuses) + else: + path_status = all_statuses[0] + + return path_status + + def is_working_copy(self, path): + try: + # when a versioned directory is removed and replaced with a + # non-versioned directory (one that doesn't have a working copy + # administration area, or .svn directory) you can't do a status + # call on that item itself (results in an exception). + # + # Note that this is not a conflict, it's more of a corruption. + # And it's associated with the status "obstructed". The only + # way to make sure that we're dealing with a working copy + # is by verifying the SVN administration area exists. + if (isdir(path) and + self.client_info(path) and + isdir(os.path.join(path, ".svn"))): + return True + return False + except Exception, e: + # FIXME: ClientError client in use on another thread + #~ log.debug("EXCEPTION in is_working_copy(): %s" % str(e)) + return False + + def is_in_a_or_a_working_copy(self, path): + return self.is_working_copy(path) or self.is_working_copy(os.path.split(path)[0]) + + def is_versioned(self, path): + if self.is_working_copy(path): + return True + else: + # info will return nothing for an unversioned file inside a working copy + if (self.is_working_copy(os.path.split(path)[0]) and + self.client_info(path)): + return True + + return False + + def is_status(self, path, status_kind): + try: + status = self.status(path, summarize=False) + except Exception, e: + log.exception("is_status exception for %s" % path) + return False + + # If looking for "NORMAL", then both statuses must be normal (or propstatus=none) + # Otherwise, it is an either or situation + if status_kind == pysvn.wc_status_kind.normal: + return (status.data["text_status"] == status_kind + and (status.data["prop_status"] == status_kind + or status.data["prop_status"] == pysvn.wc_status_kind.none)) + else: + return (status.data["text_status"] == status_kind + or status.data["prop_status"] == status_kind) + + return False + + def is_locked(self, path): + is_locked = False + try: + is_locked = self.client.info2(path, recurse=False)[0][1].lock is not None + except pysvn.ClientError, e: + return False + #log.exception("is_locked exception for %s" % path) + + return is_locked + + def get_items(self, paths, statuses=[]): + """ + Retrieves a list of files that have one of a set of statuses + + @type paths: list + @param paths: A list of paths or files. + + @type statuses: list + @param statuses: A list of pysvn.wc_status_kind statuses. + + @rtype: list + @return: A list of statuses + + """ + + items = [] + + for path in paths: + + sts = self.statuses(path, invalidate=True) + for st in sts: + if (not statuses) or (st.content in statuses or st.metadata in statuses): + items.append(st) + + return items + + def get_remote_updates(self, paths): + if paths is None: + return [] + + items = [] + for path in paths: + try: + sts = self.statuses(path, update=True, invalidate=True) + except Exception, e: + log.exception(e) + continue + + for st in sts: + + if st.remote_content is None and st.remote_metadata is None: + continue + + if st.remote_content == "none" and st.remote_metadata == "none": + continue + + items.append(st) + + return items + + def get_repo_url(self, path): + """ + Retrieve the repository URL for the given working copy path + + @type path: string + @param path: A working copy path. + + @rtype: string + @return: A repository URL. + + """ + + # If the given path is a URL, the user is passing a repository url + # In that case we already have the url + if self.is_path_repository_url(path): + return path + + # If the given path is not part of a working copy, keep trying the + # parent path to see if it is part of a working copy + path = self.get_versioned_path(os.path.abspath(path)) + if not path: + return "" + + info = self.client_info(path) + returner = "" + try: + returner = info["url"] + except Exception, e: + log.exception(e) + + return returner + + def get_repo_root_url(self, path): + """ + Retrieve the repository URL for the given working copy path + FYI this method was not added until svn 1.6.x + + @type path: string + @param path: A working copy path. + + @rtype: string + @return: A repository URL. + + """ + + info = self.client.info2(path, recurse=False) + returner = "" + try: + returner = info[0][1]["repos_root_URL"] + except Exception, e: + log.exception(e) + + return returner + + def is_path_repository_url(self, path): + for proto in ("http://", "https://", "svn://", "svn+ssh://", "file://"): + if path.startswith(proto): + return True + + return False + + def get_revision(self, path): + """ + Retrieve the current revision number for a path + + @type path: string + @param path: A working copy path. + + @rtype: integer + @return: A repository revision. + + """ + + info = self.client_info(path) + + returner = None + try: + returner = info["commit_revision"].number + except KeyError, e: + log.exception("KeyError exception in svn.py get_revision() for %s" % path) + except AttributeError, e: + log.exception("AttributeError exception in svn.py get_revision() for %s" % path) + + return returner + + def get_head(self, path): + """ + Retrieve the HEAD revision for a repository. + + @type path: string + @param path: A working copy path. + + @rtype: integer + @return: A repository revision. + + """ + + info = self.client_info(path) + + returner = None + try: + returner = info["revision"].number + except KeyError, e: + log.exception("KeyError exception in svn.py get_head() for %s" % path) + except AttributeError, e: + log.exception("AttributeError exception in svn.py get_head() for %s" % path) + + return returner + + # + # properties + # + + def get_versioned_path(self, path): + """ + Generates a safe path to use with the prop* functions. + If the given path is unversioned, go to the next path up. + + @type path: string + @param path: A file or directory path. + + @rtype: string + @return: A prop* function-safe path. + + """ + + path_to_check = path + path_to_use = None + while path_to_check != "/" and path_to_check != "": + if self.is_versioned(path_to_check): + path_to_use = path_to_check + return path_to_use + + path_to_check = os.path.split(path_to_check)[0] + + return path_to_use + + def propset(self, path, prop_name, prop_value, overwrite=False, recurse=False): + """ + Adds an svn property to a path. If the item is unversioned, + add a recursive property to the parent path + + @type path: string + @param path: A file or directory path. + + @type prop_name: string + @param prop_name: An svn property name. + + @type prop_value: string + @param prop_value: An svn property value/pattern. + + @type recurse: boolean + @param recurse: If True, the property will be applied to all + subdirectories as well. + + """ + + path = self.get_versioned_path(path) + if overwrite: + props = prop_value + else: + props = self.propget(path, prop_name) + props = "%s%s" % (props, prop_value) + + try: + self.client.propset( + prop_name, + props, + path, + recurse=recurse + ) + return True + except pysvn.ClientError, e: + log.exception("pysvn.ClientError exception in svn.py propset() for %s" % path) + except TypeError, e: + log.exception("TypeError exception in svn.py propset() %s" % path) + + return False + + def proplist(self, path, rev=None): + """ + Retrieves a dictionary of properties for a path. + + @type path: string + @param path: A file or directory path. + + @rtype: dictionary + @return: A dictionary of properties. + + """ + if rev: + returner = self.client.proplist(path, revision=rev) + else: + returner = self.client.proplist(path) + if returner: + returner = returner[0][1] + else: + returner = {} + + return returner + + def propget(self, path, prop_name, rev=None): + """ + Retrieves a dictionary of the prop_value of the given + path and prop_name + + @type path: string + @param path: A file or directory path. + + @type prop_name: string or self.PROPERTIES + @param prop_name: An svn property name. + + @rtype: dictionary + @return: A dictionary where the key is the path, the value + is the prop_value. + + """ + + path = self.get_versioned_path(path) + try: + if rev: + returner = self.client.propget( + prop_name, + path, + recurse=True, + revision=rev + ) + else: + returner = self.client.propget( + prop_name, + path, + recurse=True + ) + except pysvn.ClientError, e: + log.exception("pysvn.ClientError exception in svn.py propget() for %s" % path) + return "" + + try: + returner = returner[path] + except KeyError, e: + returner = "" + + return returner + + def propdel(self, path, prop_name, recurse=True): + """ + Removes a property from a given path + + @type path: string + @param path: A file or directory path. + + @type prop_name: string or self.PROPERTIES + @param prop_name: An svn property name. + + @type recurse: boolean + @param recurse: If True, the property will be deleted from any + subdirectories also having the property set. + + """ + + path = self.get_versioned_path(path) + + returner = False + try: + self.client.propdel( + prop_name, + path, + recurse=recurse + ) + returner = True + except pysvn.ClientError, e: + log.exception("pysvn.ClientError exception in svn.py propdel() for %s" % path) + except TypeError, e: + log.exception("TypeError exception in svn.py propdel() %s" % path) + + return returner + + def propdetails(self, path): + """ + Each property on a path may be modified in the WC, deleted or added. + This method compares the properties on the local path to the base and + identifies which. + + @param path: the path (file or dir) in the WC to check + @type path: a path for something in a WC + + @return a dict of the form: + {prop_name: + {"value": value (WC value, unless deleted then base value), + "status": status of property} + } + + """ + local_props = self.proplist(path) + base_props = self.proplist(path, + rev=Revision("base").primitive()) + + prop_details = {} + + local_propnames = set(local_props.keys()) + base_propnames = set(base_props.keys()) + + for propname in (local_propnames | base_propnames): + + if propname in (local_propnames & base_propnames): + # These are the property names that are common to the WC and + # base. If their values have changed, list them as changed + if local_props[propname] == base_props[propname]: + prop_details[propname] = {"status": rabbitvcs.vcs.status.status_normal, + "value": local_props[propname]} + + else: + prop_details[propname] = {"status": rabbitvcs.vcs.status.status_modified, + "value": local_props[propname]} + + elif propname in local_propnames: + prop_details[propname] = {"status": rabbitvcs.vcs.status.status_added, + "value": local_props[propname]} + + elif propname in base_propnames: + prop_details[propname] = {"status": rabbitvcs.vcs.status.status_deleted, + "value": base_props[propname]} + + return prop_details + + def revpropset(self, prop_name, prop_value, url, rev=None, force=False): + """ + Adds an svn property to a path. If the item is unversioned, + add a recursive property to the parent path + + @type url: string + @param url: A url to attach the prop to + + @type prop_name: string + @param prop_name: An svn property name. + + @type prop_value: string + @param prop_value: An svn property value/pattern. + + @type rev: pysvn.Revision object + @param rev: The revision to attach the prop to + + @type force: boolean + @param force: If True, the property will be forced + + """ + + if rev is None: + rev = self.revision("head") + + self.client.revpropset(prop_name, prop_value, url, + revision=rev.primitive()) + + def revproplist(self, url, rev=None): + """ + Retrieves a dictionary of properties for a url. + + @type url: string + @param url: A repository url + + @type rev: pysvn.Revision object + @param rev: The revision to attach the prop to + + @rtype: tuple(revision object, propsdict) + @return: A tuple with revision information and property dictionary + + """ + + if rev is None: + rev = self.revision("head") + + return self.client.revproplist(url, rev.primitive())[1] + + def revpropget(self, url, prop_name, rev=None): + """ + Retrieves the revprop value for a specific url/propname/revision + + @type url: string + @param url: A repository url + + @type prop_name: string or self.PROPERTIES + @param prop_name: An svn property name. + + @type rev: pysvn.Revision object + @param rev: The revision to attach the prop to + + @rtype: tuple(revision object, propsdict) + @return: A tuple with revision information and property dictionary + + """ + + if rev is None: + rev = self.revision("head") + + return self.client.revpropget( + prop_name, + url, + revision=rev.primitive() + ) + + def revpropdel(self, url, prop_name, rev=None, force=False): + """ + Removes a property from a given path + + @type url: string + @param url: A repository url + + @type prop_name: string or self.PROPERTIES + @param prop_name: An svn property name. + + @type rev: pysvn.Revision object + @param rev: The revision to attach the prop to + + @type force: boolean + @param force: If True, the property deletion will be forced + + """ + + if rev is None: + rev = self.revision("head") + + return self.client.revpropdel( + prop_name, + url, + revision=rev.primitive(), + force=force + ) + + # + # callbacks + # + + def set_callback_cancel(self, func): + self.client.callback_cancel = func + + def callback_cancel(self): + if hasattr(self.client, "callback_cancel"): + self.client.callback_cancel() + + def set_callback_notify(self, func): + self.client.callback_notify = func + + def set_callback_get_log_message(self, func): + self.client.callback_get_log_message = func + + def set_callback_get_login(self, func): + self.client.callback_get_login = func + + def set_callback_ssl_server_trust_prompt(self, func): + self.client.callback_ssl_server_trust_prompt = func + + def set_callback_ssl_client_cert_password_prompt(self, func): + self.client.callback_ssl_client_cert_password_prompt = func + + def set_callback_ssl_client_cert_prompt(self, func): + self.client.callback_ssl_client_cert_prompt = func + + # + # revision + # + + def revision(self, kind, date=None, number=None): + """ + Create a revision object usable by pysvn + + @type kind: string + @param kind: An svn.REVISIONS keyword. + + @type date: integer + @param date: Used for kind=date, in the form of UNIX TIMESTAMP (secs). + + @type number: integer + @param number: Used for kind=number, specifies the revision number. + + @rtype: pysvn.Revision object + @return: A pysvn.Revision object. + + """ + + # TODO: Don't use kwargs for date/number, just accept a "value" as a + # regular arg + + value = None + if date: + value = date + elif number: + value = number + + return Revision(kind, value) + + # + # actions + # + + def add(self, paths, recurse=True): + """ + Add files or directories to the repository + + @type paths: list + @param paths: A list of files/directories. + + @type recurse: boolean + @param recurse: Recursively add a directory's children + + """ + + return self.client.add(paths, recurse) + + def add_backwards(self, path): + """ + This will add the given path to version control, and any parent + directories that themselves require adding. It is essential that "path" + contains a WC somewhere in its hierarchy. + + @param path: the path to add to version control + @type path: string + """ + head, tail = path,"" + tails = list() + + # We need to add backwards-recursively, since patch could create + # files any level deep in the tree + while not (self.is_working_copy(head) or self.is_versioned(head)): + head, tail = os.path.split(head) + tails.insert(0, tail) + # If we get all the way to the FS root, something really dumb + # has happened. + assert head, "No longer in a working copy!" + + # Walk back up the tree... + for tail in tails: + head = os.path.join(head, tail) + self.add(head, depth=pysvn.depth.empty) + + def copy(self, src, dest, revision=Revision("head")): + """ + Copy files/directories from src to dest. src or dest may both be either + a local path or a repository URL. revision is a pysvn.Revision object. + + @type src: string + @param src: Source URL or path. + + @type dest: string + @param dest: Destination URL or path. + + @type revision: pysvn.Revision object + @param revision: A pysvn.Revision object. + + """ + src = rabbitvcs.util.helper.urlize(src) + dest = rabbitvcs.util.helper.urlize(dest) + return self.client.copy(src, dest, revision.primitive()) + + def copy_all(self, sources, dest_url_or_path, copy_as_child=False, + make_parents=False, ignore_externals=False): + """ + Copy sources to the dest_url_or_path. + + @type sources: list of tuples + @param sources: A list of tuples (url_or_path,revision) + + @type dest_url_or_path: string + @param dest_url_or_path: Destination URL or path. + + @type copy_as_child: boolean + @param copy_as_child: If there are multiple sources, copy as child + to dest_url_or_path (assumed to be a folder) + + @type make_parents: boolean + @param make_parents: TBD + + @type ignore_externals: boolean + @param ignore_externals: Omit externals + + """ + + return self.client.copy2(sources, dest_url_or_path, copy_as_child, + make_parents, None, ignore_externals) + + def checkout(self, url, path, recurse=True, revision=Revision("head"), + ignore_externals=False): + + """ + Checkout a working copy from a vcs repository + + @type url: string + @param url: A repository url. + + @type path: string + @param path: A local destination for the working copy. + + @type recurse: boolean + @param recurse: Whether or not to run a recursive checkout. + + @type revision: pysvn.Revision + @param revision: Revision to checkout, defaults to HEAD. + + @type ignore_externals: boolean + @param ignore_externals: Whether or not to ignore externals. + + """ + + url = rabbitvcs.util.helper.urlize(url) + + return self.client.checkout(url, path, recurse=recurse, + revision=revision.primitive(), ignore_externals=ignore_externals) + + def cleanup(self, path): + """ + Clean up a working copy. + + @type path: string + @param path: A local working copy path. + + """ + + return self.client.cleanup(path) + + def revert(self, paths): + """ + Revert files or directories so they are unversioned + + @type paths: list + @param paths: A list of files/directories. + + """ + + return self.client.revert(paths) + + def commit(self, paths, log_message="", recurse=False, keep_locks=False): + """ + Commit a list of files to the repository. + + @type paths: list + @param paths: A list of files/directories. + + @type log_message: string + @param log_message: A commit log message. + + @type recurse: boolean + @param recurse: Whether or not to recurse into sub-directories. + + @type keep_locks: boolean + @param keep_locks: Whether or not to keep locks on commit. + + """ + + kwargs = {"keep_locks": keep_locks} + try: + # Simply setting recurse=False will not stop child files from getting + # committed. The pysvn.depth kwarg must be set to empty. + # Unfortunately, older pysvn/svn installations do not have the depth + # enum so for those, recurse must be used. + kwargs["depth"] = (recurse and pysvn.depth.infinity or pysvn.depth.empty) + except AttributeError: + kwargs["recurse"] = recurse + + retval = self.client.checkin(paths, log_message, **kwargs) + dummy_commit_dict = { + "revision": retval, + "action": rabbitvcs.vcs.svn.commit_completed + } + self.client.callback_notify(dummy_commit_dict) + return retval + + def log(self, url_or_path, revision_start=Revision("head"), + revision_end=Revision("number", 0), limit=0, + discover_changed_paths=True, strict_node_history=False): + """ + Retrieve log items for a given path in the repository + + @type url_or_path: string + @param url_or_path: Path for which to get log items for + + @type revision_start: pysvn.Revision + @param revision_start: Most recent revision. Defaults to HEAD + + @type revision_end: pysvn.Revision + @param revision_end: Oldest revision. Defaults to rev 0. + + @type limit: int + @param limit: The maximum number of items to return. Defaults to 0. + + """ + + log = self.client.log(url_or_path, revision_start.primitive(), + revision_end.primitive(), discover_changed_paths, + strict_node_history, limit) + + returner = [] + for item in log: + revision = Revision(pysvn.opt_revision_kind.number, item.revision.number) + date = datetime.fromtimestamp(item.date) + + author = _("(no author)") + if hasattr(item, "author"): + author = item["author"] + + message = "" + if hasattr(item, "message"): + message = item["message"] + + changed_paths = [] + for changed_path in item.changed_paths: + copy_from_rev = "" + if hasattr(changed_path.copyfrom_revision, "number"): + copy_from_rev = self.revision("number", changed_path.copyfrom_revision.number) + + copy_from_path = "" + if hasattr(changed_path, "copy_from_path"): + copy_from_path = changed_path.copy_from_path + + changed_paths.append(rabbitvcs.vcs.log.LogChangedPath( + changed_path.path, + changed_path.action, + copy_from_path, + copy_from_rev + )) + + returner.append(rabbitvcs.vcs.log.Log( + date, + revision, + author, + message, + changed_paths, + None + )) + + return returner + + def export(self, src_url_or_path, dest_path, revision=Revision("head"), + recurse=True, ignore_externals=False, force=False, native_eol=None): + + """ + Export files from either a working copy or repository into a local + path without versioning information. + + @type src_url_or_path: string + @param src_url_or_path: A repository url. + + @type dest_path: string + @param dest_path: A local destination for the working copy. + + @type revision: pysvn.Revision + @param revision: The revision to retrieve from the repository. + + @type ignore_externals: boolean + @param ignore_externals: Whether or not to ignore externals. + + @type recurse: boolean + @param recurse: Whether or not to run a recursive checkout. + + """ + + return self.client.export(src_url_or_path, dest_path, force, + revision.primitive(), native_eol, ignore_externals, recurse) + + def import_(self, path, url, log_message, ignore=False): + + """ + Import an unversioned file or directory structure into a repository. + + @type path: string + @param path: An unversioned file or directory structure + + @type url: string + @param url: A repository location to put the imported files + + @type log_message: string + @param log_message: Log message to use for commit + + @type ignore: boolean + @param ignore: Disregard svn:ignore props + + """ + + url = rabbitvcs.util.helper.urlize(url) + return self.client.import_(path, url, log_message, ignore) + + def lock(self, url_or_path, lock_comment, force=False): + + """ + Lock a url or path. + + @type url_or_path: string + @param url_or_path: A url or path to lock + + @type lock_comment: string + @param lock_comment: A log message to go along with the lock. + + @type force: boolean + @param force: Steal the locks of others if they exist. + + """ + + return self.client.lock(url_or_path, lock_comment, force) + + def relocate(self, from_url, to_url, path, recurse=True): + + """ + Relocate the working copy from from_url to to_url for path + + @type from_url: string + @param from_url: A url to relocate from + + @type to_url: string + @param to_url: A url to relocate to + + @type path: string + @param path: The path of the local working copy + + """ + + from_url = rabbitvcs.util.helper.urlize(from_url) + to_url = rabbitvcs.util.helper.urlize(to_url) + return self.client.relocate(from_url, to_url, path, recurse) + + def move(self, src_url_or_path, dest_url_or_path): + + """ + Schedule a file to be moved around the repository + + @type src_url_or_path: string + @param src_url_or_path: A url/path to move from + + @type dest_url_or_path: string + @param dest_url_or_path: A url/path to move to + + """ + + if hasattr(self.client, "move2"): + return self.client.move2([src_url_or_path], dest_url_or_path) + else: + return self.client.move(src_url_or_path, dest_url_or_path, + force=True) + + def move_all(self, sources, dest_url_or_path, move_as_child=False, + make_parents=False): + """ + Move sources to the dest_url_or_path. + + @type sources: list of tuples + @param sources: A list of tuples (url_or_path,revision) + + @type dest_url_or_path: string + @param dest_url_or_path: Destination URL or path. + + @type move_as_child: boolean + @param move_as_child: If there are multiple sources, move as child + to dest_url_or_path (assumed to be a folder) + + @type make_parents: boolean + @param make_parents: TBD + + """ + + return self.client.move2(sources, dest_url_or_path, + move_as_child=move_as_child, make_parents=make_parents) + + def remove(self, url_or_path, force=False, keep_local=False): + + """ + Schedule a file to be removed from the repository + + @type url_or_path: string + @param url_or_path: A url/path to remove + + @type force: boolean + @param force: Force renaming, despite conflicts. Defaults to false. + + @type keep_local: boolean + @param keep_local: Keep the local copy (don't just delete it) + + """ + + return self.client.remove(url_or_path, force, keep_local) + + def revert(self, paths, recurse=False): + """ + Revert files or directories from the repository + + @type paths: list + @param paths: A list of files/directories. + + @type recurse: boolean + @param recurse: Recursively add a directory's children + + """ + + return self.client.revert(paths, recurse) + + def resolve(self, path, recurse=True): + """ + Mark conflicted files as resolved + + @type path: string + @param path: A local path to resolve + + @type recurse: boolean + @param recurse: Recursively add a directory's children + + """ + + return self.client.resolved(path, recurse) + + def switch(self, path, url, revision=Revision("head")): + """ + Switch the working copy to another repository source. + + @type path: string + @param path: A local path to a working copy + + @type url: string + @param url: The repository location to switch to + + @type revision: pysvn.Revision + @param revision: The revision of the repository to switch to (Def:HEAD) + + """ + + url = rabbitvcs.util.helper.urlize(url) + return self.client.switch(path, url, revision.primitive()) + + def unlock(self, path, force=False): + """ + Unlock locked files. + + @type path: string + @param path: A local path to resolve + + @type force: boolean + @param force: If locked by another user, unlock it anyway. + + """ + + return self.client.unlock(path, force) + + def update(self, path, recurse=True, revision=Revision("head"), + ignore_externals=False): + """ + Update a working copy. + + @type path: string + @param path: A local path to update + + @type recurse: boolean + @param recurse: Update child folders recursively + + @type revision: pysvn.Revision + @param revision: Revision to update to (Def: HEAD) + + @type ignore_externals: boolean + @param ignore_externals: Ignore external items + + """ + + return self.client.update(path, recurse, revision.primitive(), + ignore_externals) + + def annotate(self, url_or_path, from_revision=Revision("number", 1), + to_revision=Revision("head")): + """ + Get the annotate results for the given file and revision range. + + @type url_or_path: string + @param url_or_path: A url or local path + + @type from_revision: pysvn.Revision + @param from_revision: Revision from (def: 1) + + @type to_revision: pysvn.Revision + @param to_revision: Revision to (def: HEAD) + + """ + + return self.client.annotate(url_or_path, from_revision.primitive(), + to_revision.primitive()) + + def merge_ranges(self, source, ranges_to_merge, peg_revision, + target_wcpath, notice_ancestry=False, force=False, dry_run=False, + record_only=False): + """ + Merge a range of revisions. + + @type source: string + @param source: A repository location + + @type ranges_to_merge: list of tuples + @param ranges_to_merge: A list of revision ranges to merge + + @type peg_revision: pysvn.Revision + @param peg_revision: Indicates which revision in sources is valid. + + @type target_wcpath: string + @param target_wcpath: Target working copy path + + @type notice_ancestry: boolean + @param notice_ancestry: unsure + + @type force: boolean + @param force: unsure + + @type dry_run: boolean + @param dry_run: Do a test/dry run or not + + @type record_only: boolean + @param record_only: unsure + + TODO: Will firm up the parameter documentation later + + """ + return self.client.merge_peg2(source, + ranges_to_merge, + peg_revision.primitive(), + target_wcpath, + notice_ancestry=notice_ancestry, + force=force, + dry_run=dry_run, + record_only=record_only) + + def has_merge2(self): + """ + Tests whether the user has a later version of pysvn/svn installed + with more merge features + """ + return hasattr(self.client, "merge_peg2") + + def merge_trees(self, url_or_path1, revision1, url_or_path2, revision2, + local_path, force=False, recurse=True, record_only=False): + """ + Merge two trees into one. + + @type url_or_path1: string + @param url_or_path1: From WC/URL location + + @type revision1: pysvn.Revision + @param revision1: Indicates the revision of the URL/Path + + @type url_or_path2: string + @param url_or_path2: To WC/URL location + + @type revision2: pysvn.Revision + @param revision2: Indicates the revision of the URL/Path + + @type local_path: string + @param local_path: Target working copy path + + @type force: boolean + @param force: unsure + + @type recurse: boolean + @param recurse: Merge children recursively + + @type record_only: boolean + @param record_only: unsure + + TODO: Will firm up the parameter documentation later + + """ + + url_or_path1 = rabbitvcs.util.helper.urlize(url_or_path1) + url_or_path2 = rabbitvcs.util.helper.urlize(url_or_path2) + return self.client.merge(url_or_path1, revision1.primitive(), + url_or_path2, revision2.primitive(), local_path, force, recurse, + record_only) + + def has_merge_reintegrate(self): + """ + Tests whether the user has a later version of pysvn/svn installed + with more merge features + """ + return hasattr(self.client, "merge_reintegrate") + + def merge_reintegrate(self, url_or_path, revision, local_path, dry_run=False): + """ + Merge a branch into trunk + + @type url_or_path: string + @param url_or_path: From WC/URL location + + @type revision: Revision() + @param revision: Indicates the revision of the URL/Path + + @type local_path: string + @param local_path: Target working copy path + + @type dry_run: boolean + @param dry_run: Do a test/dry run or not + + """ + + return self.client.merge_reintegrate(url_or_path, revision.primitive(), + local_path, dry_run) + + + def diff(self, tmp_path, url_or_path, revision1, url_or_path2, revision2, + recurse=True, ignore_ancestry=False, diff_deleted=True, + ignore_content_type=False): + """ + Returns the diff text between the base code and the working copy. + + @type tmp_path: string + @param tmp_path: Temporal path to store the diff + + @type url_or_path: string + @param url_or_path: From WC/URL location + + @type revision1: pysvn.Revision + @param revision1: Indicates the revision of the URL/Path (def: pysvn.Revision( opt_revision_kind.base )) + + @type url_or_path2: string + @param url_or_path2: From WC/URL location + + @type revision2: pysvn.Revision + @param revision2: Indicates the revision of the URL/Path (def: pysvn.Revision( opt_revision_kind.working )) + + @type recurse: boolean + @param recurse: Whether or not to recurse into sub-directories. (def: True) + + @type ignore_ancestry: boolean + @param ignore_ancestry: Whether or not to recurse into sub-directories. (def: False) + + @type diff_deleted: boolean + @param diff_deleted: Whether or not to recurse into sub-directories. (def: True) + + @type ignore_content_type: boolean + @param ignore_content_type: Whether or not to recurse into sub-directories. (def: False) + + """ + + return self.client.diff(tmp_path, url_or_path, revision1.primitive(), + url_or_path2, revision2.primitive(), recurse, ignore_ancestry, + diff_deleted, ignore_content_type) + + def diff_summarize(self, url_or_path1, revision1, url_or_path2, revision2, + recurse=True, ignore_ancestry=False): + """ + Returns a summary of changed items between two paths/revisions + + @type url_or_path1: string + @param url_or_path1: First WC/URL location + + @type revision1: pysvn.Revision + @param revision1: Indicates the revision of the URL/Path (def: pysvn.Revision( opt_revision_kind.base )) + + @type url_or_path2: string + @param url_or_path2: Second WC/URL location + + @type revision2: pysvn.Revision + @param revision2: Indicates the revision of the URL/Path (def: pysvn.Revision( opt_revision_kind.working )) + + @type recurse: boolean + @param recurse: Whether or not to recurse into sub-directories. (def: True) + + @type ignore_ancestry: boolean + @param ignore_ancestry: Whether or not to recurse into sub-directories. (def: False) + + @type depth: pysvn.depth enum + @param depth: a replacement for recurse + + """ + + return self.client.diff_summarize(url_or_path1, revision1.primitive(), + url_or_path2, revision2.primitive(), recurse, ignore_ancestry) + + def list(self, url_or_path, revision=Revision("HEAD"), recurse=True): + url_or_path = rabbitvcs.util.helper.urlize(url_or_path) + return self.client.list(url_or_path, revision=revision.primitive(), + recurse=recurse) + + def mkdir(self, url_or_path, log_message): + """ + Make a new directory in the repository or working copy + + @type url_or_path: string + @param url_or_path: Url in the repository or path in working copy + + @type log_message: string + @param log_message: A log message to use in your commit + + """ + + return self.client.mkdir(url_or_path, log_message) + + def apply_patch(self, patch_file, base_dir): + """ + Applies a patch created for this WC. + + @type patch_file: string + @param patch_file: the path to the patch file + + @type base_dir: string + @param base_dir: the base directory from which to interpret the paths in + the patch file + """ + + any_failures = False + + for file, success, rej_file in rabbitvcs.util.helper.parse_patch_output(patch_file, base_dir): + + fullpath = os.path.join(base_dir, file) + + event_dict = dict() + + event_dict["path"] = file + event_dict["mime_type"] = "" # meh + + if success: + event_dict["action"] = _("Patched") # not in pysvn, but + # we have a fallback + else: + any_failures = True + event_dict["action"] = _("Patch Failed") # better wording needed? + + # Creates its own notifications. + self.add_backwards(fullpath) + + if rej_file: + rej_info = { + "path" : rej_file, + "action" : _("Rejected Patch"), + "mime_type" : None + } + + if self.client.callback_notify: + self.client.callback_notify(event_dict) + if rej_file: + self.client.callback_notify(rej_info) + + + + def is_version_less_than(self, version): + """ + @type version: tuple + @param version: A version tuple to compare pysvn's version to + """ + + if version[0] > pysvn.version[0]: + return True + + if ((version[0] == pysvn.version[0]) + and (version[1] > pysvn.version[1])): + return True + + if ((version[0] == pysvn.version[0]) + and (version[1] == pysvn.version[1]) + and (version[2] > pysvn.version[2])): + return True + + if ((version[0] == pysvn.version[0]) + and (version[1] == pysvn.version[1]) + and (version[2] == pysvn.version[2]) + and (version[3] > pysvn.version[3])): + return True + + return False + + def is_version_greater_than(self, version): + """ + @type version: tuple + @param version: A version tuple to compare pysvn's version to + """ + + if version[0] < pysvn.version[0]: + return True + + if ((version[0] == pysvn.version[0]) + and (version[1] < pysvn.version[1])): + return True + + if ((version[0] == pysvn.version[0]) + and (version[1] == pysvn.version[1]) + and (version[2] < pysvn.version[2])): + return True + + if ((version[0] == pysvn.version[0]) + and (version[1] == pysvn.version[1]) + and (version[2] == pysvn.version[2]) + and (version[3] < pysvn.version[3])): + return True + + return False diff -Nru rabbitvcs-0.13.1/README rabbitvcs-0.15.0.5/README --- rabbitvcs-0.13.1/README 2010-01-29 20:19:38.000000000 +0000 +++ rabbitvcs-0.15.0.5/README 2011-10-21 16:05:08.000000000 +0000 @@ -1,3 +1,4 @@ +fdgdfgsd RabbitVCS ---------- @@ -14,10 +15,16 @@ Requires: pygtk >= 2.12 python-gobject >= 2.14 - python-svn >= 1.5.2 python-configobj >= 4.4.0 + +For subversion: + python-svn >= 1.5.2 subversion >= 1.4.6 +For git: + dulwich >= 0.6 + git + Recommends: meld (graphical diff tool) diff -Nru rabbitvcs-0.13.1/scripts/import_launchpad_translations.sh rabbitvcs-0.15.0.5/scripts/import_launchpad_translations.sh --- rabbitvcs-0.13.1/scripts/import_launchpad_translations.sh 2010-03-26 15:08:02.000000000 +0000 +++ rabbitvcs-0.15.0.5/scripts/import_launchpad_translations.sh 2010-05-18 16:34:39.000000000 +0000 @@ -18,12 +18,12 @@ for mo in `ls`; do - if [ -f ../../rabbitvcs/locale/$mo/LC_MESSAGES/RabbitVCS.mo ]; + if [ -f ../../locale/$mo/LC_MESSAGES/RabbitVCS.mo ]; then - mv $mo/LC_MESSAGES/* ../../rabbitvcs/locale/$mo/LC_MESSAGES/RabbitVCS.mo + mv $mo/LC_MESSAGES/* ../../locale/$mo/LC_MESSAGES/RabbitVCS.mo else - mkdir -p ../../rabbitvcs/locale/$mo/LC_MESSAGES - mv $mo/LC_MESSAGES/rabbit-vcs.mo ../../rabbitvcs/locale/$mo/LC_MESSAGES/RabbitVCS.mo + mkdir -p ../../locale/$mo/LC_MESSAGES + mv $mo/LC_MESSAGES/rabbit-vcs.mo ../../locale/$mo/LC_MESSAGES/RabbitVCS.mo fi done diff -Nru rabbitvcs-0.13.1/scripts/install_po_files.sh rabbitvcs-0.15.0.5/scripts/install_po_files.sh --- rabbitvcs-0.13.1/scripts/install_po_files.sh 1970-01-01 00:00:00.000000000 +0000 +++ rabbitvcs-0.15.0.5/scripts/install_po_files.sh 2010-12-09 23:59:27.000000000 +0000 @@ -0,0 +1,11 @@ +#!/bin/sh + +# Converts all the po source files into mo binary files and installs them in +# the correct location + +for i in `ls ../po/*.po`; +do + filename=`basename $i` + locale=`echo ${filename%.*}` + ./install_translation.sh $locale $i +done diff -Nru rabbitvcs-0.13.1/scripts/install_translation.sh rabbitvcs-0.15.0.5/scripts/install_translation.sh --- rabbitvcs-0.13.1/scripts/install_translation.sh 2010-01-25 15:27:58.000000000 +0000 +++ rabbitvcs-0.15.0.5/scripts/install_translation.sh 2010-12-09 23:59:00.000000000 +0000 @@ -9,7 +9,7 @@ exit 1 fi -mkdir -p ../rabbitvcs/locale/$LOCALE/LC_MESSAGES -msgfmt --output-file=../rabbitvcs/locale/$LOCALE/LC_MESSAGES/RabbitVCS.mo $POFILE +mkdir -p ../locale/$LOCALE/LC_MESSAGES +msgfmt --output-file=../locale/$LOCALE/LC_MESSAGES/RabbitVCS.mo $POFILE -echo "Translations installed to ../rabbitvcs/locale/$LOCALE/LC_MESSAGES/RabbitVCS.mo" +echo "Translations installed to ../locale/$LOCALE/LC_MESSAGES/RabbitVCS.mo" diff -Nru rabbitvcs-0.13.1/scripts/sync_strings.sh rabbitvcs-0.15.0.5/scripts/sync_strings.sh --- rabbitvcs-0.13.1/scripts/sync_strings.sh 2010-02-26 17:37:20.000000000 +0000 +++ rabbitvcs-0.15.0.5/scripts/sync_strings.sh 2011-11-07 19:04:11.000000000 +0000 @@ -1,20 +1,29 @@ #!/bin/sh # Sync our translation template file with the actual strings -# 1. Extracts strings from glade files into .h fileS +# 1. Extracts strings from gtkbuilder xml files into .h files # 2. Extracts gettext strings from py files # 3. Deletes the glade .h files -cd ../rabbitvcs +cd .. -for i in `find . | grep '\.glade' | grep -v '\.svn'`; +for i in `find . | grep '\.xml' | grep -v '\.svn' | grep -v '\.xml\.h'`; do intltool-extract --type=gettext/glade $i done -xgettext -L Python --keyword=_ --keyword=N_ -o po/RabbitVCS.pot -f po/POTFILES.in +cd rabbitvcs -for i in `find . | grep '\.glade\.h' | grep -v '\.svn'`; +echo "util/helper.py" > POTFILES.in +find . -type f | egrep '(ui|.xml)' | grep -v \.svn | grep -v \.h | grep -v \.pyc >> POTFILES.in +sed -i 's|\.xml|.xml.h|g' POTFILES.in +sed -i 's|\.\/||g' POTFILES.in + +mv POTFILES.in ../po/POTFILES.in + +xgettext -L Python --keyword=_ --keyword=N_ -o ../po/RabbitVCS.pot -f ../po/POTFILES.in + +for i in `find . | grep '\.xml\.h' | grep -v '\.svn'`; do rm -f $i done diff -Nru rabbitvcs-0.13.1/setup.py rabbitvcs-0.15.0.5/setup.py --- rabbitvcs-0.13.1/setup.py 2010-03-26 15:11:15.000000000 +0000 +++ rabbitvcs-0.15.0.5/setup.py 2011-11-09 19:11:00.000000000 +0000 @@ -33,6 +33,13 @@ from distutils.core import setup import distutils.sysconfig +PREFIX = sys.prefix + +# If the user passed --prefix=... then use the new prefix +for c in sys.argv: + if c.startswith("--prefix"): + PREFIX = c.split("=")[1].lstrip().rstrip() + #============================================================================== # Variables #============================================================================== @@ -41,7 +48,7 @@ # This will eventually be passed to the setup function, but we already need them # for doing some other stuff so we have to declare them here. name = "rabbitvcs" -version = "0.13.1" +version = "0.15.0.5" description = "Easy version control" long_description = """RabbitVCS is a set of graphical tools written to provide simple and straightforward access to the version control systems you use.""" author = "Bruce van der Kooij" @@ -53,8 +60,8 @@ # Paths #============================================================================== -icon_theme_directory = "/usr/share/icons/hicolor" # TODO: does this really need to be hardcoded? -locale_directory = "/usr/share/locale" +icon_theme_directory = "share/icons/hicolor" +locale_directory = "share/locale" #============================================================================== # Helper functions @@ -82,24 +89,33 @@ packages.append(root.replace(os.path.sep, ".")) # Translation -translations = include_by_pattern("rabbitvcs/locale", locale_directory, ".mo") +translations = include_by_pattern("locale", locale_directory, ".mo") # Icons -icons = include_by_pattern("rabbitvcs/data/icons/hicolor", icon_theme_directory, ".svg") +icons = include_by_pattern("data/icons/hicolor", icon_theme_directory, ".svg") +icons += include_by_pattern("data/icons/hicolor", icon_theme_directory, ".png") # Config parsing specification config_spec = [( - # FIXME: hard coded prefix! - "/usr/share/rabbitvcs", - ["rabbitvcs/lib/configspec/configspec.ini"] + "share/rabbitvcs", + ["rabbitvcs/util/configspec/configspec.ini"] )] # Documentation -documentation = [("/usr/share/doc/rabbitvcs", [ +documentation = [("share/doc/rabbitvcs", [ "AUTHORS", "MAINTAINERS" ])] +# Save build information so we can access the prefix later +path = "rabbitvcs/buildinfo.py" +buildinfo = '''rabbitvcs_prefix = "%s" +icon_path = "%s/%s" +''' % (PREFIX, PREFIX, icon_theme_directory) +fh = open(path, "w") +fh.write(buildinfo) +fh.close() + #============================================================================== # Ready to install #============================================================================== @@ -126,11 +142,11 @@ # file) into site-packages # - data_files: any file you want, anywhere you want it packages=packages, - include_package_data=True, package_data={ "rabbitvcs": [ - # Include our Glade UI files right into the package - "ui/glade/*.glade" + # Include our GtkBuilder UI files right into the package + "ui/xml/*.xml", + "ui/xml/dialogs/*.xml" ] }, data_files=translations + icons + documentation + config_spec @@ -142,9 +158,11 @@ # Make sure the icon cache is deleted and recreated if sys.argv[1] == "install": - print "Running gtk-update-icon-cache" - - subprocess.Popen( - ["gtk-update-icon-cache", icon_theme_directory], - stdout=subprocess.PIPE - ).communicate()[0] + + if os.uname()[0] != 'Darwin': + print "Running gtk-update-icon-cache" + + subprocess.Popen( + ["gtk-update-icon-cache", icon_theme_directory], + stdout=subprocess.PIPE + ).communicate()[0]