Re: pysvn: RC fix #678559 as new upstream release
Hi,
On Wed, 18 Jul 2012 21:22:01 +0200
Julien Cristau <jcristau@debian.org> wrote:
> > > Have you tested the reverse dependencies with the new
> > > version (seems to be svn-workbench, svn-load, , ibid,
> > > w3af-console)?
> >
> > Not yet, honestly.
> >
> > So, I should ask others to help this migration with upgraded pysvn
> > by putting it to experimental once, then post "call for check" for
> > their package. After that, I'll put pysvn to unstable and post unblock
> > request to BTS.
> >
> Sounds good to me. Thanks!
I've investigated pysvn related pacakge, Workbench needs update to new upstream
version. Workbench 1.6.6 (released 4 Mar 2012) supports Subversion 1.7.3 and
1.6.17. I want to put it to repository, so once to experimental.
Note that, its debdiff is also huge - 5000 lines. 3300 lines are just changes with
copyright year, win32/MacOSX platform depended and internationalization (hu.po),
but 1700 lines remain. If you, release manager could say "Go" for it, I'll upload
to unstable after few days.
Pros)
- We can step forward to put subversion1.7 into Wheezy
- If there's any regression for it, no other packages are affected.
(No reverse dependency)
- it released 3 month before freeze, and there's no issue after that, just I can
see is on Windows issue http://pysvn.tigris.org/issues/show_bug.cgi?id=176
- It reduces work for security/important update patch produce in the future
- "about" menu doesn't work with current unstable version, but new 1.6.6
works fine at least ;)
Cons)
- You know, it violates basic freeze rule (and its diff 1700 lines at least)
Notes)
- Workbench 1.6.6 with pysvn 1.7.6 looks good for me (with several minutes test).
Now this package is orphaned, so I'll adopt this package and keep update and
fix it (to learn python app :).
--
Regards,
Hideki Yamane henrich @ debian.or.jp/org
http://wiki.debian.org/HidekiYamane
diff -Nru svn-workbench-1.6.2/Source/make_pot_file.py svn-workbench-1.6.6/Source/make_pot_file.py
--- svn-workbench-1.6.2/Source/make_pot_file.py 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/make_pot_file.py 2011-11-06 23:19:48.000000000 +0900
@@ -12,7 +12,7 @@
f.write( '%s\n' % py_file )
f.close()
-rc = os.system( 'xgettext '
+cmd = ('xgettext '
'--files-from=wb_files.tmp '
'--default-domain=pysvn_workbench '
'--output=I18N/pysvn_workbench.current.pot '
@@ -25,5 +25,8 @@
'--no-wrap '
'--width=2047 '
'--add-comments=Translat '
- '--language=Python' )
+ '--language=Python')
+
+print 'Info: %s' % (cmd,)
+rc = os.system( cmd )
sys.exit( rc )
diff -Nru svn-workbench-1.6.2/Source/wb-diff.sh svn-workbench-1.6.6/Source/wb-diff.sh
--- svn-workbench-1.6.2/Source/wb-diff.sh 1970-01-01 09:00:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb-diff.sh 2011-11-05 22:50:19.000000000 +0900
@@ -0,0 +1,29 @@
+#!/bin/sh
+export PYSVN_WORKBENCH_STDOUT_LOG=$(tty)
+
+SOURCEDIR=$( dirname $0 )
+
+if [ "$PYTHONPATH" = "" ]
+then
+ export PYTHONPATH=${SOURCEDIR}
+else
+ export PYTHONPATH=${SOURCEDIR}:$PYTHONPATH
+fi
+
+PYTHON=${PYTHON:-python}
+BASENAME=$( basename ${PYTHON} )
+SUFFIX=${X#python*}
+DIRNAME=$( dirname ${PYTHON} )
+
+if [ "${DIRNAME}" != "" ]
+then
+ DIRNAME=${DIRNAME}/
+fi
+PYTHONW=${DIRNAME}pythonw${SUFFIX}
+
+if [ -e ${PYTHONW} ]
+then
+ ${PYTHONW} ${SOURCEDIR}/wb_diff_main.py $*
+else
+ ${PYTHON} ${SOURCEDIR}/wb_diff_main.py $*
+fi
diff -Nru svn-workbench-1.6.2/Source/wb.sh svn-workbench-1.6.6/Source/wb.sh
--- svn-workbench-1.6.2/Source/wb.sh 2006-10-25 06:51:49.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb.sh 2011-11-27 23:20:58.000000000 +0900
@@ -9,7 +9,7 @@
PYTHON=${PYTHON:-python}
BASENAME=$( basename ${PYTHON} )
-SUFFIX=${X#python*}
+SUFFIX=${BASENAME#python*}
DIRNAME=$( dirname ${PYTHON} )
if [ "${DIRNAME}" != "" ]
@@ -18,9 +18,14 @@
fi
PYTHONW=${DIRNAME}pythonw${SUFFIX}
+if [ -e /System/Library/CoreServices/SystemVersion.plist ]
+then
+ ARCH_CMD="arch -i386"
+fi
+
if [ -e ${PYTHONW} ]
then
- ${PYTHONW} wb_main.py $*
+ ${ARCH_CMD} ${PYTHONW} wb_main.py $*
else
- ${PYTHON} wb_main.py $*
+ ${ARCH_CMD} ${PYTHON} wb_main.py $*
fi
diff -Nru svn-workbench-1.6.2/Source/wb_app.py svn-workbench-1.6.6/Source/wb_app.py
--- svn-workbench-1.6.2/Source/wb_app.py 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_app.py 2012-07-25 06:31:59.000000000 +0900
@@ -663,6 +663,8 @@
def emit( self, record ):
try:
msg = self.format(record) + '\n'
+ if type( msg ) == types.UnicodeType:
+ msg = msg.encode( 'utf-8' )
sys.__stdout__.write( msg )
diff -Nru svn-workbench-1.6.2/Source/wb_dialogs.py svn-workbench-1.6.6/Source/wb_dialogs.py
--- svn-workbench-1.6.2/Source/wb_dialogs.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -14,6 +14,7 @@
import os
import pysvn
import wb_subversion_utils
+import wb_platform_specific
id_log_message_text = wx.NewId()
id_last_log_message = wx.NewId()
@@ -123,7 +124,7 @@
self.last_log_message_text = None
if self.message_filename is not None:
try:
- self.last_log_message_text = file( self.message_filename, 'r' ).read().decode('utf-8').strip()
+ self.last_log_message_text = wb_platform_specific.uOpen( self.message_filename, 'r' ).read().decode('utf-8').strip()
except EnvironmentError:
self.last_log_message_text = ''
@@ -150,7 +151,7 @@
def OnOk( self, event ):
self.EndModal( wx.ID_OK )
try:
- file( self.message_filename, 'w' ).write( self.getLogMessage().encode('utf-8') )
+ wb_platform_specific.uOpen( self.message_filename, 'w' ).write( self.getLogMessage().encode('utf-8') )
except (IOError,OSError):
pass
diff -Nru svn-workbench-1.6.2/Source/wb_frame.py svn-workbench-1.6.6/Source/wb_frame.py
--- svn-workbench-1.6.2/Source/wb_frame.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_frame.py 2011-11-27 22:43:10.000000000 +0900
@@ -27,6 +27,7 @@
import wb_platform_specific
import wb_bookmarks_dialogs
import wb_toolbars
+import wb_subversion_utils
import wb_config
@@ -118,6 +119,9 @@
self.menu_actions.Append( wb_ids.id_SP_Revert, T_('Revert...'), T_('Revert') )
self.menu_actions.AppendSeparator()
self.menu_actions.Append( wb_ids.id_SP_Cleanup, T_('Clean up'), T_('Clean up working copy') )
+ if wb_subversion_utils.version_info.has_upgrade:
+ self.menu_actions.AppendSeparator()
+ self.menu_actions.Append( wb_ids.id_SP_Upgrade, T_('Upgrade'), T_('Upgrade working copy') )
self.menu_actions.AppendSeparator()
self.menu_actions.Append( wb_ids.id_SP_CreateTag, T_('Create Tag...'), T_('Create Tag') )
self.menu_actions.Append( wb_ids.id_SP_CreateBranch, T_('Create Branch...'), T_('Create Branch') )
@@ -345,6 +349,10 @@
wx.EVT_MENU( self, wb_ids.id_SP_UpdateTo, self.app.eventWrapper( self.OnSpUpdateTo ) )
wx.EVT_UPDATE_UI( self, wb_ids.id_SP_UpdateTo, self.app.eventWrapper( self.OnUpdateUiSpUpdateTo ) )
+ if wb_subversion_utils.version_info.has_upgrade:
+ wx.EVT_MENU( self, wb_ids.id_SP_Upgrade, self.app.eventWrapper( self.OnSpUpgrade ) )
+ wx.EVT_UPDATE_UI( self, wb_ids.id_SP_Upgrade, self.app.eventWrapper( self.OnUpdateUiSpUpgrade ) )
+
wx.EVT_MENU( self, wb_ids.id_SP_Report_Updates, self.app.eventWrapper( self.OnSpReportUpdates ) )
wx.EVT_UPDATE_UI( self, wb_ids.id_SP_Report_Updates, self.app.eventWrapper( self.OnUpdateUiSpReportUpdates ) )
wx.EVT_MENU( self, wb_ids.id_SP_Report_LocksWc, self.app.eventWrapper( self.OnSpReportLocksWc ) )
@@ -462,13 +470,17 @@
ver_str = ('%d.%d.%d-%d\n' %
(wb_version.major, wb_version.minor,
wb_version.patch, wb_version.build))
- str_message = ((T_('Work Bench version: %s') % ver_str) +
- '\n' + wb_source_control_providers.getProviderAboutStrings() +
- '\nwxPython %d.%d.%d.%d %s' % wx.VERSION +
- '\nPython %d.%d.%d %s %d\n' % sys.version_info +
- T_('\nCopyright Barry Scott (c) 2003-2009. All rights reserved')
- )
- wx.LogMessage( str_message )
+ str_message_parts = [T_('Work Bench version: %s') % ver_str
+ ,wb_source_control_providers.getProviderAboutStrings()
+ ,'wxPython %d.%d.%d.%d %s' % wx.VERSION
+ ,'Python %d.%d.%d %s %d\n' % (sys.version_info[0]
+ ,sys.version_info[1]
+ ,sys.version_info[2]
+ ,sys.version_info[3]
+ ,sys.version_info[4])
+
+ ,T_('\nCopyright Barry Scott (c) 2003-2011. All rights reserved')]
+ wx.LogMessage( '\n'.join( str_message_parts ) )
def OnCmdPreferences( self, event ):
pref_dialog = wb_preferences_dialog.PreferencesDialog( self, self.app )
@@ -770,7 +782,8 @@
def OnUpdateUiSpAnnotate( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned and (not self.ui_state_focus.is_folder) )
@@ -780,7 +793,8 @@
def OnUpdateUiSpCheckin( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.need_checkin
@@ -872,7 +886,8 @@
def OnUpdateUiSpDiffWorkHead( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
if self.ui_state_list is self.ui_state_focus:
@@ -888,14 +903,16 @@
def OnUpdateUiSpDiffWorkBranchOriginBase( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_list.versioned and not self.ui_state_list.new_versioned )
def OnUpdateUiSpDiffWorkBranchOriginHead( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_list.versioned and not self.ui_state_list.new_versioned )
@@ -907,7 +924,8 @@
self.getUpdateUiState()
if wb_config.debug_selection_update: print 'ZF: OnUpdateUiSpHistory versioned %r handler %r' % (
self.ui_state_focus.versioned, self.event_handler)
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned and not self.ui_state_focus.new_versioned )
@@ -917,7 +935,8 @@
def OnUpdateUiSpInfo( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned )
@@ -949,7 +968,8 @@
def OnUpdateUiSpProperties( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned )
@@ -1001,7 +1021,8 @@
def OnUpdateUiSpRevert( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.revertable )
@@ -1019,7 +1040,8 @@
def OnUpdateUiSpUpdate( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
elif self.ui_state_focus.is_project_parent:
@@ -1041,6 +1063,16 @@
def OnUpdateUiSpUpdateTo( self, event ):
self.OnUpdateUiSpUpdate(event)
+ def OnSpUpgrade( self, event ):
+ self.clearUpdateUiState()
+ return self.tree_panel.OnSpUpgrade()
+
+ def OnUpdateUiSpUpgrade( self, event ):
+ self.getUpdateUiState()
+
+ # this is a tree only command
+ event.Enable( self.list_panel.list_handler.project_info.need_upgrade )
+
#----------------------------------------
def Sp_Dispatch( self, sp_func_name ):
self.clearUpdateUiState()
@@ -1102,7 +1134,7 @@
self.text_ctrl = StyledLogCtrl( self.app, self )
# Redirect the console IO to this panel
- sys.stdin = file( wb_platform_specific.getNullDevice(), 'r' )
+ sys.stdin = wb_platform_specific.uOpen( wb_platform_specific.getNullDevice(), 'r' )
if self.app.isStdIoRedirect():
sys.stdout = self
sys.stderr = self
diff -Nru svn-workbench-1.6.2/Source/wb_ids.py svn-workbench-1.6.6/Source/wb_ids.py
--- svn-workbench-1.6.2/Source/wb_ids.py 2009-03-08 03:25:46.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_ids.py 2011-11-21 01:52:09.000000000 +0900
@@ -75,6 +75,7 @@
id_SP_Unlock = wx.NewId()
id_SP_Update = wx.NewId()
id_SP_UpdateTo = wx.NewId()
+id_SP_Upgrade = wx.NewId()
id_SP_CreateTag = wx.NewId()
id_SP_CreateBranch = wx.NewId()
diff -Nru svn-workbench-1.6.2/Source/wb_list_panel_common.py svn-workbench-1.6.6/Source/wb_list_panel_common.py
--- svn-workbench-1.6.2/Source/wb_list_panel_common.py 2009-10-12 01:25:29.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_list_panel_common.py 2011-11-21 01:52:09.000000000 +0900
@@ -21,6 +21,7 @@
import wb_ids
import wb_shell_commands
import wb_dialogs
+import wb_platform_specific
class ListSortData:
def __init__( self, order=1, field=0 ):
@@ -54,6 +55,7 @@
self.unversioned = False
self.need_checkin = False
self.need_checkout = False
+ self.need_upgrade = False
self.conflict = False
self.file_exists = False
self.is_folder = False
@@ -328,7 +330,7 @@
if self.list_handler.mayOpen( row ):
self.app.selectTreeNode( filename )
- elif not os.path.isdir( filename ):
+ elif not wb_platform_specific.uPathIsdir( filename ):
wb_shell_commands.EditFile( self.app, self.list_handler.getProjectInfo(), filename )
def isTreeHandler( self ):
diff -Nru svn-workbench-1.6.2/Source/wb_main.py svn-workbench-1.6.6/Source/wb_main.py
--- svn-workbench-1.6.2/Source/wb_main.py 2009-10-04 20:50:50.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_main.py 2012-03-04 05:14:15.000000000 +0900
@@ -27,7 +27,7 @@
or (sys.platform == 'darwin' and '--noredirect' not in sys.argv) ):
stdout_filename = os.environ.get( 'PYSVN_WORKBENCH_STDOUT_LOG', '/tmp/workbench.tmp' )
-elif sys.platform.startswith( 'win' ):
+elif sys.platform.startswith( 'win' ) and '--noredirect' not in sys.argv:
stdout_filename = os.path.join( os.environ[ 'TEMP' ], 'workbench.tmp' )
if stdout_filename is not None:
diff -Nru svn-workbench-1.6.2/Source/wb_platform_unix_specific.py svn-workbench-1.6.6/Source/wb_platform_unix_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_unix_specific.py 2007-12-01 16:13:47.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_unix_specific.py 2011-01-05 20:46:33.000000000 +0900
@@ -13,6 +13,7 @@
'''
import os
+import types
def getApplicationDir():
return os.path.join( os.environ['HOME'], '.WorkBench' )
@@ -22,3 +23,48 @@
def getNullDevice():
return '/dev/null'
+
+def uPathExists( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.exists( path )
+
+def uPathIsdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.isdir( path )
+
+def uAccess( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.access( path, mode )
+
+def uRemove( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.remove( path )
+
+def uRename( path1, path2 ):
+ if type(path1) == types.UnicodeType:
+ path1 = path1.encode( 'utf-8' )
+
+ if type(path2) == types.UnicodeType:
+ path2 = path2.encode( 'utf-8' )
+
+ return os.rename( path1, path2 )
+
+def uOpen( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return open( path, mode )
+
+def uChdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.chdir( path )
diff -Nru svn-workbench-1.6.2/Source/wb_preferences.py svn-workbench-1.6.6/Source/wb_preferences.py
--- svn-workbench-1.6.2/Source/wb_preferences.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_preferences.py 2010-12-31 02:50:13.000000000 +0900
@@ -105,14 +105,14 @@
new_name = self.pref_filename + '.tmp'
old_name = self.pref_filename + '.old'
- f = file( new_name, 'w' )
+ f = wb_platform_specific.uOpen( new_name, 'w' )
self.pref_data.write( f )
f.close()
- if os.path.exists( self.pref_filename ):
- if os.path.exists( old_name ): # os.rename does not delete automatically on Windows.
- os.remove( old_name )
- os.rename( self.pref_filename, old_name )
- os.rename( new_name, self.pref_filename )
+ if wb_platform_specific.uPathExists( self.pref_filename ):
+ if wb_platform_specific.uPathExists( old_name ): # os.rename does not delete automatically on Windows.
+ wb_platform_specific.uRemove( old_name )
+ wb_platform_specific.uRename( self.pref_filename, old_name )
+ wb_platform_specific.uRename( new_name, self.pref_filename )
self.app.log.info( T_('Wrote preferences to %s') % self.pref_filename )
@@ -123,7 +123,7 @@
def __init__( self, log, xml_pref_filename, ini_pref_filename ):
self.all_sections = {}
- if os.path.exists( xml_pref_filename ):
+ if wb_platform_specific.uPathExists( xml_pref_filename ):
log.info( T_('Reading preferences from %s') % xml_pref_filename )
self.__readXml( xml_pref_filename )
else:
@@ -132,7 +132,7 @@
def __readXml( self, xml_pref_filename ):
try:
- f = file( xml_pref_filename, 'r' )
+ f = wb_platform_specific.uOpen( xml_pref_filename, 'r' )
text = f.read()
f.close()
diff -Nru svn-workbench-1.6.2/Source/wb_preferences_dialog.py svn-workbench-1.6.6/Source/wb_preferences_dialog.py
--- svn-workbench-1.6.2/Source/wb_preferences_dialog.py 2009-10-03 19:22:02.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_preferences_dialog.py 2010-12-31 02:50:13.000000000 +0900
@@ -18,6 +18,7 @@
import wb_dialogs
import wb_tree_panel
import wb_toolbars
+import wb_platform_specific
class PreferencesDialog( wx.Dialog ):
def __init__( self, parent, app ):
@@ -168,14 +169,14 @@
# otherwise it must exist
valid = False
if wx.Platform == '__WXMAC__':
- valid = (os.access( self.text_ctrl_editor.GetValue(), os.X_OK )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uAccess( self.text_ctrl_editor.GetValue(), os.X_OK )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
elif wx.Platform == '__WXMSW__':
- valid = (os.path.exists( self.text_ctrl_editor.GetValue() )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uPathExists( self.text_ctrl_editor.GetValue() )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
else:
- valid = (os.access( self.text_ctrl_editor.GetValue(), os.X_OK )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uAccess( self.text_ctrl_editor.GetValue(), os.X_OK )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
if not valid:
wx.MessageBox(
diff -Nru svn-workbench-1.6.2/Source/wb_project_dialogs.py svn-workbench-1.6.6/Source/wb_project_dialogs.py
--- svn-workbench-1.6.2/Source/wb_project_dialogs.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_project_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -12,7 +12,10 @@
'''
import wx
import wx.wizard
+
import wb_source_control_providers
+import wb_platform_specific
+
import pysvn
import os
@@ -143,7 +146,7 @@
wc_path = os.path.expanduser( self.wc_path_ctrl.GetValue().strip() )
url = None
- if os.path.exists( wc_path ):
+ if wb_platform_specific.uPathExists( wc_path ):
try:
info = self.client.info( wc_path )
url = info.url
@@ -508,14 +511,14 @@
state.wc_path = os.path.abspath( os.path.expanduser( self.wc_path_ctrl.GetValue().strip() ) )
state.url_path = self.url_ctrl.GetLabel().strip()
- if not os.path.exists( state.wc_path ):
+ if not wb_platform_specific.uPathExists( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Does not exist\n'
'Choose an existing subversion working copy directory')
% state.wc_path, style=wx.OK|wx.ICON_ERROR );
return False
- if not os.path.isdir( state.wc_path ):
+ if not wb_platform_specific.uPathIsdir( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Is not a directory\n'
'Choose an existing subversion working copy directory')
@@ -557,7 +560,7 @@
wc_path = os.path.expanduser( wc_path )
url = None
- if os.path.exists( wc_path ):
+ if wb_platform_specific.uPathExists( wc_path ):
try:
info = self.parent.client_pi.client_fg.info( wc_path )
url = info.url
@@ -665,8 +668,8 @@
style=wx.OK|wx.ICON_ERROR );
return False
- if os.path.exists( state.wc_path ):
- if not os.path.isdir( state.wc_path ):
+ if wb_platform_specific.uPathExists( state.wc_path ):
+ if not wb_platform_specific.uPathIsdir( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Is not a directory\n'
'Choose a directory that is empty and not in use by subversion')
diff -Nru svn-workbench-1.6.2/Source/wb_read_file.py svn-workbench-1.6.6/Source/wb_read_file.py
--- svn-workbench-1.6.2/Source/wb_read_file.py 2007-04-07 17:51:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_read_file.py 2010-12-31 02:50:13.000000000 +0900
@@ -13,8 +13,10 @@
import locale
import codecs
+import wb_platform_specific
+
def readFileContentsAsUnicode( filename ):
- f = file( filename, 'r' )
+ f = wb_platform_specific.uOpen( filename, 'r' )
contents = f.read()
f.close()
@@ -37,15 +39,22 @@
if( len(contents) > len(codecs.BOM_UTF8)
and contents[0:len(codecs.BOM_UTF8)] == codecs.BOM_UTF8 ):
encoding = 'utf-8'
+
elif( len(contents) > len(codecs.BOM_UTF16_LE)
and contents[0:len(codecs.BOM_UTF16_LE)] in [codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE]):
encoding = 'utf-16'
+
elif( len(contents) > len(codecs.BOM_UTF32_LE)
and contents[0:len(codecs.BOM_UTF32_LE)] in [codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE]):
encoding = 'utf-32'
+
else:
encoding = locale.getdefaultlocale()[1]
+ # Mac says mac-roman when utf-8 is what is required
+ if encoding == 'mac-roman':
+ encoding = 'utf-8'
+
if encoding is None:
encoding = 'iso8859-1'
diff -Nru svn-workbench-1.6.2/Source/wb_shell_unix_commands.py svn-workbench-1.6.6/Source/wb_shell_unix_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_unix_commands.py 2009-10-11 22:00:29.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_unix_commands.py 2011-01-05 03:50:40.000000000 +0900
@@ -13,11 +13,14 @@
import os
import signal
import subprocess
+import types
+
+import wb_platform_specific
__sigchld_handler_installed = False
gui_terminals = ['gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal']
-gui_file_browsers = ['nautilus', 'konqueror', 'thunar']
+gui_file_browsers = ['nautilus', 'konqueror', 'thunar', 'dolphin']
def getTerminalProgramList():
return gui_terminals[:]
@@ -41,20 +44,20 @@
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
__run_command( app, editor_image, editor_args )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def ShellOpen( app, project_info, filename ):
app.log.info( T_('Open %s') % filename )
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
- os.system( "gnome-open '%s'" % filename )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
+ os.system( "xdg-open '%s'" % filename )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def GuiDiffFiles( app, options ):
cmd_line = "'%s' %s &" % (app.prefs.getDiffTool().gui_diff_tool, options)
@@ -79,7 +82,7 @@
title.append( pi.project_name )
pi = pi.parent
- f = open( shell_script_filename, 'w' )
+ f = wb_platform_specific.uOpen( shell_script_filename, 'w' )
f.write( 'export WB_WD="%s"\n' % working_dir )
f.write( 'cd "%s"\n' % working_dir )
@@ -105,10 +108,12 @@
if terminal_program == 'konsole':
__run_command( app, terminal_program,
- ['-T', ' '.join( title ), '--workdir', working_dir, '-e', shell_script_filename] )
+ ['--title', ' '.join( title ), '--workdir', working_dir, '-e', '/bin/sh', shell_script_filename] )
+
elif terminal_program in ('gnome-terminal', 'xfce4-terminal'):
__run_command( app, terminal_program,
['--title', ' '.join( title ), '--working-directory', working_dir, '-x', shell_script_filename] )
+
elif terminal_program == 'xterm':
__run_command( app, terminal_program,
['-T', ' '.join( title ), '-e', shell_script_filename] )
@@ -130,9 +135,10 @@
if not found:
return
- if browser_program == 'konsole':
+ if browser_program == 'konqueror':
__run_command( app, browser_program, ['--mimetype', 'inode/directory', project_info.getWorkingDir()] )
- elif browser_program in ('nautilus', 'thunar'):
+
+ elif browser_program in ('nautilus', 'thunar', 'dolphin'):
__run_command( app, browser_program, [project_info.getWorkingDir()] )
def __run_command( app, cmd, args ):
@@ -158,8 +164,17 @@
signal.signal( signal.SIGCHLD, __sigchld_handler )
__sigchld_handler_installed = True
+ cmd = asUtf8( cmd )
+ args = [asUtf8( arg ) for arg in args]
+
os.spawnvpe( os.P_NOWAIT, cmd, [cmd]+args, env )
+def asUtf8( s ):
+ if type( s ) == types.UnicodeType:
+ return s.encode( 'utf-8' )
+ else:
+ return s
+
def __sigchld_handler( signum, frame ):
try:
while True:
diff -Nru svn-workbench-1.6.2/Source/wb_show_diff_frame.py svn-workbench-1.6.6/Source/wb_show_diff_frame.py
--- svn-workbench-1.6.2/Source/wb_show_diff_frame.py 2009-10-12 01:36:44.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_show_diff_frame.py 2010-12-31 02:50:13.000000000 +0900
@@ -23,6 +23,10 @@
# fix up line endings CRLF to LF and CR to LF
text = raw_text.replace( '\r\n', '\n' ).replace( '\r', '\n' )
+ try:
+ text = text.decode( 'utf-8' )
+ except ValueError:
+ pass
diff_prefs = app.prefs.getDiffWindow()
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_checkin.py svn-workbench-1.6.6/Source/wb_subversion_checkin.py
--- svn-workbench-1.6.2/Source/wb_subversion_checkin.py 2009-10-03 17:21:08.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_checkin.py 2011-11-21 01:52:09.000000000 +0900
@@ -30,7 +30,7 @@
class CheckinFrame(wx.Frame):
def __init__( self, app, project_info, all_files ):
- wx.Frame.__init__( self, None, -1, T_('Check in for %s') % project_info.wc_path, size=(700,500) )
+ wx.Frame.__init__( self, None, -1, T_('Check in for %s') % project_info.wc_path, size=(1000,500) )
self.app = app
@@ -110,7 +110,7 @@
self.last_log_message_text = None
try:
- f = file( self.message_filename, 'r' )
+ f = wb_platform_specific.uOpen( self.message_filename, 'r' )
self.last_log_message_text = f.read().decode('utf-8').strip()
f.close()
except EnvironmentError:
@@ -232,7 +232,7 @@
message = self.log_message_ctrl.GetValue().encode('utf-8')
try:
- f = file( self.message_filename, 'w' )
+ f = wb_platform_specific.uOpen( self.message_filename, 'w' )
f.write( message )
f.close()
except EnvironmentError:
@@ -329,7 +329,10 @@
self.all_excluded_files = {}
self.__parent = parent
-
+
+ def overrideColumnInfo( self ):
+ self.column_info.setColumnWidth( 'Name', self.column_info.getColumnWidth( 'Name' ) + 20 )
+
def getContextMenu( self ):
menu_template = [
('', wb_ids.id_File_Edit, T_('Edit') )
@@ -398,7 +401,7 @@
# Set the project files to be this new list
self.project_info.all_files = all_files
-
+
class CheckinProjectInfo:
def __init__( self, project_info, all_files ):
self.all_files = all_files
@@ -407,6 +410,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_diff.py svn-workbench-1.6.6/Source/wb_subversion_diff.py
--- svn-workbench-1.6.2/Source/wb_subversion_diff.py 2009-04-13 19:35:09.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_diff.py 2010-12-31 02:50:13.000000000 +0900
@@ -20,6 +20,7 @@
import wb_show_diff_frame
import wb_read_file
import wb_diff_frame
+import wb_platform_specific
debug_diff = False
@@ -93,18 +94,18 @@
for path_info in (old_path_info, new_path_info):
if( path_info.revision is None
or path_info.revision.kind == pysvn.opt_revision_kind.working ):
- if not os.path.exists( path_info.path ):
+ if not wb_platform_specific.uPathExists( path_info.path ):
app.log_error( '"%s" does not exist.' % path_info.path )
fd, path_info.path = tempfile.mkstemp( suffix=os.path.basename( path_info.path ) )
os.close( fd )
# keep track of the temp file
app.all_temp_files.append( path_info.path )
- if os.path.isdir( path_info.path ):
+ if wb_platform_specific.uPathIsdir( path_info.path ):
app.log_error( '"%s" refers to a directory.' % path_info.path )
return
- if not os.access( path_info.path, os.R_OK ):
+ if not wb_platform_specific.uAccess( path_info.path, os.R_OK ):
app.log_error( '"%s" cannot be read.' % path_info.path )
return
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_history.py svn-workbench-1.6.6/Source/wb_subversion_history.py
--- svn-workbench-1.6.2/Source/wb_subversion_history.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_history.py 2011-01-05 03:50:40.000000000 +0900
@@ -17,6 +17,7 @@
import os
import time
import types
+import urllib
import pysvn
@@ -53,7 +54,10 @@
self.author = author
self.date = date
self.label = label
- self.message = message
+ try:
+ self.message = message.decode( 'utf-8' )
+ except ValueError:
+ self.message = message
self.changed_paths = changed_paths
self.changed_paths.sort( self.by_changed_path )
@@ -70,14 +74,22 @@
if filter_field == T_('Author'):
return filter_text.lower() in self.author.lower()
+
elif filter_field == T_('Comment'):
return filter_text.lower() in self.message.lower()
+
elif filter_field == T_('Path'):
for changed_path in self.changed_paths:
- if filter_text.lower() in changed_path.path.lower():
+ try:
+ c_p_p = changed_path.path.decode('utf-8')
+ except ValueError:
+ c_p_p = changed_path.path
+
+ if filter_text.lower() in c_p_p.lower():
return True
return False
+
else:
assert( False )
return False
@@ -101,7 +113,8 @@
if len( all_log_entries ) == 0:
return info.URL, all_history_entries
- repos_path = info.URL[len(info.repos_root_URL):]
+ repos_path = urllib.unquote( info.URL[len(info.repos_root_URL):].encode( 'utf-8' ) )
+
for log in all_log_entries:
# author is optional
if 'author' not in log:
@@ -110,7 +123,7 @@
all_history_entries.append(
LogEntry(
log.revision.number,
- info.repos_root_URL+repos_path,
+ info.URL,
log.author,
log.date,
'',
@@ -119,7 +132,11 @@
for changed_path in log.changed_paths:
if changed_path.action in ['A','M']:
- if repos_path == changed_path.path:
+ if changed_path.path is not None:
+ c_p_p = changed_path.path.decode( 'utf-8' )
+ else:
+ c_p_p = None
+ if repos_path == c_p_p:
if changed_path.copyfrom_path is not None:
repos_path = changed_path.copyfrom_path
break
@@ -484,7 +501,7 @@
# Arrange the panels with the splitter windows
self.splitter.AppendWindow( self.panel_history, 250 )
self.splitter.AppendWindow( self.panel_comment, 100 )
- self.splitter.AppendWindow( self.panel_changed_paths, 150 )
+ self.splitter.AppendWindow( self.panel_changed_paths, 200 )
self.selected_revisions = {}
@@ -508,7 +525,7 @@
char_width = 9
self.list_ctrl.SetColumnWidth( self.col_revision, 7*char_width )
self.list_ctrl.SetColumnWidth( self.col_author, 14*char_width )
- self.list_ctrl.SetColumnWidth( self.col_date, 15*char_width )
+ self.list_ctrl.SetColumnWidth( self.col_date, 18*char_width )
self.list_ctrl.SetColumnWidth( self.col_label, 12*char_width )
self.list_ctrl.SetColumnWidth( self.col_message, 40*char_width )
@@ -525,9 +542,9 @@
char_width = 9
self.paths_ctrl.SetColumnWidth( self.col_action, 7*char_width )
- self.paths_ctrl.SetColumnWidth( self.col_path, 40*char_width )
+ self.paths_ctrl.SetColumnWidth( self.col_path, 60*char_width )
self.paths_ctrl.SetColumnWidth( self.col_copyfrom_revision, 6*char_width )
- self.paths_ctrl.SetColumnWidth( self.col_copyfrom_path, 40*char_width )
+ self.paths_ctrl.SetColumnWidth( self.col_copyfrom_path, 60*char_width )
self.initButtons( self.v_sizer_history )
@@ -686,7 +703,7 @@
self.paths_ctrl.InsertStringItem( index,
action_map.get( info.action, info.action ) )
self.paths_ctrl.SetStringItem( index, self.col_path,
- info.path )
+ info.path.decode( 'utf-8' ) )
if info.copyfrom_path is not None:
self.paths_ctrl.SetStringItem( index, self.col_copyfrom_revision,
str( info.copyfrom_revision.number ) )
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_list_handler.py svn-workbench-1.6.6/Source/wb_subversion_list_handler.py
--- svn-workbench-1.6.2/Source/wb_subversion_list_handler.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_list_handler.py 2011-11-21 01:52:09.000000000 +0900
@@ -25,6 +25,7 @@
import wb_clipboard
import wb_diff_frame
import wb_dialogs
+import wb_platform_specific
class SubversionListHandler(wb_subversion_list_handler_common.SubversionListHandlerCommon):
def __init__( self, app, list_panel, project_info ):
@@ -34,9 +35,14 @@
return '<SubversionListHandler %r>' % self.project_info
def getContextMenu( self ):
- if self.project_info.need_checkout:
+ if self.project_info.need_upgrade:
+ menu_template = \
+ [('', wb_ids.id_SP_Upgrade, T_('Upgrade') )]
+
+ elif self.project_info.need_checkout:
menu_template = \
[('', wb_ids.id_SP_Checkout, T_('Checkout') )]
+
else:
menu_template = \
[('', wb_ids.id_File_Edit, T_('Edit') )]
@@ -117,7 +123,7 @@
all_status = []
try:
for filename in paste_data.getAllFilenames():
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
dir_status = self.project_info.client_bg.status( os.path.dirname( filename ), recurse=False )
all_status.extend( [s for s in dir_status if s.path == filename] )
else:
@@ -149,7 +155,7 @@
else:
rename_title = T_('Rename')
- while os.path.exists( new_filename ):
+ while wb_platform_specific.uPathExists( new_filename ):
new_name, force = self.app.renameFile( rename_title, os.path.basename( old_filename ), None )
if new_name is None:
return
@@ -168,7 +174,7 @@
try:
if paste_data.isCopy():
- if os.path.isdir( old_filename ):
+ if wb_platform_specific.uPathIsdir( old_filename ):
if is_controlled:
self.project_info.client_bg.copy( old_filename, new_filename )
else:
@@ -179,11 +185,11 @@
ok = True
else:
- if os.path.isdir( old_filename ):
+ if wb_platform_specific.uPathIsdir( old_filename ):
if is_controlled:
self.project_info.client_bg.move( old_filename, new_filename, force=force )
else:
- os.rename( old_filename, new_filename )
+ wb_platform_specific.uRename( old_filename, new_filename )
else:
text_status = self.getTextStatus( status )
prop_status = self.getPropStatus( status )
@@ -249,7 +255,7 @@
if is_controlled:
if text_status == pysvn.wc_status_kind.added:
self.project_info.client_fg.revert( filename )
- os.remove( filename )
+ wb_platform_specific.uRemove( filename )
elif( text_status == pysvn.wc_status_kind.modified
or prop_status == pysvn.wc_status_kind.modified ):
@@ -260,7 +266,7 @@
self.project_info.client_fg.remove( filename )
else:
- os.remove( filename )
+ wb_platform_specific.uRemove( filename )
except pysvn.ClientError, e:
self.app.log_client_error( e )
@@ -301,7 +307,7 @@
def __copyFile( self, old_filename, new_full_filename, is_controlled, text_status, prop_status ):
if not is_controlled:
raise EnvironmentError( 'TBD - copy file' )
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
return
if( text_status == pysvn.wc_status_kind.normal
@@ -312,7 +318,7 @@
def __moveFile( self, old_filename, new_full_filename, is_controlled, text_status, prop_status ):
if not is_controlled:
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
return
if text_status == pysvn.wc_status_kind.added:
@@ -323,7 +329,7 @@
print( T_('Rename %(from)s %(to)s') %
{'from': old_filename
,'to': new_full_filename} )
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
self.project_info.client_fg.add( new_full_filename )
# all_prop_lists is empty if there are no properties set
@@ -339,7 +345,7 @@
for tmp_name_index in range( 100 ):
tmp_filename = os.path.join( os.path.dirname( old_filename ),
'%s.%d.tmp' % (new_full_filename, tmp_name_index) )
- if not os.path.exists( tmp_filename ):
+ if not wb_platform_specific.uPathExists( tmp_filename ):
new_full_tmp_filename = tmp_filename
break
@@ -353,15 +359,15 @@
print( T_('Rename %(from)s %(to)s') %
{'from': old_filename
,'to': new_full_tmp_filename} )
- os.rename( old_filename, new_full_tmp_filename )
+ wb_platform_specific.uRename( old_filename, new_full_tmp_filename )
self.project_info.client_fg.revert( old_filename )
self.project_info.client_fg.move( old_filename, new_full_filename )
- os.remove( new_full_filename )
+ wb_platform_specific.uRemove( new_full_filename )
print( T_('Rename %(from)s %(to)s') %
{'from': new_full_tmp_filename
,'to': new_full_tmp_filename} )
- os.rename( new_full_tmp_filename, new_full_filename )
+ wb_platform_specific.uRename( new_full_tmp_filename, new_full_filename )
if len(all_props) > 0:
_, prop_dict = all_props[0]
@@ -460,8 +466,11 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
- T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
+ T_("Warning"),
+ style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
@@ -513,8 +522,11 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
- T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
+ T_("Warning"),
+ style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_list_handler_common.py svn-workbench-1.6.6/Source/wb_subversion_list_handler_common.py
--- svn-workbench-1.6.2/Source/wb_subversion_list_handler_common.py 2009-10-03 19:22:02.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_list_handler_common.py 2011-11-21 01:52:09.000000000 +0900
@@ -26,6 +26,7 @@
import wb_subversion_properties_dialog
import wb_subversion_diff
import wb_config
+import wb_platform_specific
col_labels = [
('Name', U_('Name'), 25, 10, 100, wx.LIST_FORMAT_LEFT),
@@ -106,6 +107,15 @@
for index, name in enumerate( self.column_order ):
self.column_info_by_name[ name ].column = index
+ def getColumnWidth( self, column_name ):
+ return self.column_info_by_name[ column_name ].width
+
+ def setColumnWidth( self, column_name, width ):
+ info = self.column_info_by_name[ column_name ]
+ width = max( info.min_width, width )
+ width = min( info.max_width, width )
+ info.width = width
+
def getColumnOrder( self ):
return self.column_order
@@ -200,6 +210,10 @@
def setupColumnInfo( self ):
self.column_info.setFromPreferenceData( self.app.prefs.getView() )
+ self.overrideColumnInfo()
+
+ def overrideColumnInfo( self ):
+ pass
def setupColumns( self ):
self.setupColumnInfo()
@@ -228,8 +242,9 @@
self.list_panel.updateHeader( self.project_info.url, self.project_info.wc_path )
- # nothing doing if the wc does not exist
- if self.project_info.need_checkout:
+ # nothing doing if the wc does not exist or needs upgrade
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
# empty the list
g.DeleteAllItems()
@@ -283,7 +298,8 @@
def sortList( self, sort_data ):
self.app.log.debug('sortList' )
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
# nothing to sort
return
@@ -354,6 +370,12 @@
def OnGetItemText( self, index, col ):
column = self.column_info.getNameByColumn( col )
+ if self.project_info.need_upgrade:
+ if column == self.col_name:
+ return T_('Use the Upgrade command to convert the working copy to the required format')
+ else:
+ return ''
+
if self.project_info.need_checkout:
if column == self.col_name:
if self.isProjectParent():
@@ -404,7 +426,8 @@
return value
def OnGetItemAttr( self, index ):
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
colour = wb_config.colour_status_need_checkout
else:
colour = self.statusColour( self.all_files[ index ] )
@@ -417,7 +440,8 @@
return self.all_item_attr[ colour ]
def isItemImageFolder(self, item):
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
return True
elif self.GetItemIsDir( item ):
@@ -429,14 +453,14 @@
def GetItemIsDir(self, item):
status = self.all_files[ item ]
if status.entry is None:
- is_dir = os.path.isdir( status.path )
+ is_dir = wb_platform_specific.uPathIsdir( status.path )
else:
is_dir = status.entry.kind == pysvn.node_kind.dir
return is_dir
def __get_NameColumn( self, status, prefix_len ):
if status.entry is None:
- is_dir = os.path.isdir( status.path )
+ is_dir = wb_platform_specific.uPathIsdir( status.path )
else:
is_dir = status.entry.kind == pysvn.node_kind.dir
if is_dir:
@@ -493,7 +517,7 @@
return wb_subversion_utils.fmtDateTime( status.entry.commit_time )
def __get_LockCommentColumn( self, status ):
- if status.repos_lock is not None:
+ if status.repos_lock is not None and status.repos_lock.comment is not None:
comment = status.repos_lock.comment.replace( '\n', ' ' )
elif status.entry is not None and status.entry.lock_comment is not None:
comment = status.entry.lock_comment.replace( '\n', ' ' )
@@ -516,6 +540,10 @@
state = wb_list_panel_common.ListItemState()
+ if self.project_info.need_upgrade:
+ state.need_upgrade = True
+ return state
+
if self.project_info.need_checkout:
state.need_checkout = True
state.ui_project_parent = True
@@ -535,10 +563,10 @@
for row in all_rows:
filename = self.all_files[ row ].path
- if not os.path.exists( filename ):
+ if not wb_platform_specific.uPathExists( filename ):
state.file_exists = False
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
state.modified = False
state.conflict = False
state.file_exists = False
@@ -603,7 +631,7 @@
def mayOpen( self, row_or_status ):
status = self.getStatusFromRowOrStatus( row_or_status )
if status.entry is None:
- return not os.path.isdir( self.getFilename( row_or_status ) )
+ return not wb_platform_specific.uPathIsdir( self.getFilename( row_or_status ) )
else:
return status.entry.kind == pysvn.node_kind.dir
@@ -974,7 +1002,7 @@
prop_dict = {}
else:
_, prop_dict = prop_list[0]
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
dialog = wb_subversion_properties_dialog.DirPropertiesDialog( self.app,
self.list_panel.list_ctrl,
filename,
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_project_info.py svn-workbench-1.6.6/Source/wb_subversion_project_info.py
--- svn-workbench-1.6.2/Source/wb_subversion_project_info.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_project_info.py 2012-03-04 05:14:15.000000000 +0900
@@ -29,6 +29,8 @@
import wb_subversion_tree_handler
import wb_subversion_list_handler
import wb_subversion_utils
+import wb_platform_specific
+import wb_subversion_utils
_fast_proplist = True
@@ -48,6 +50,7 @@
self.all_tree_files_status = []
self.need_checkout = True
+ self.need_upgrade = False
self.need_properties = False
self.files_properties = {}
@@ -179,8 +182,13 @@
self.notification_of_files_in_conflict += 1
# print anything that gets through the filter
- msg = '%s %s\n' % (action_letter, arg_dict['path'])
- self.app.foregroundProcess( sys.stdout.write, (msg,) )
+ try:
+ path = arg_dict['path'].decode( 'utf-8' )
+ except ValueError:
+ path = arg_dict['path']
+
+ msg = u'%s %s\n' % (action_letter, path)
+ self.app.foregroundProcess( sys.stdout.write, (msg.encode( 'utf-8' ),) )
def readPreferences( self, get_option ):
wb_source_control_providers.ProjectInfo.readPreferences( self, get_option )
@@ -261,15 +269,26 @@
self.dir_status = None
self.need_checkout = True
- if not os.path.exists( self.wc_path ):
+ if not wb_platform_specific.uPathExists( self.wc_path ):
return
p = self.app.prefs.getView()
+
try:
+ self.need_upgrade = False
entry = self.client_fg.info( self.wc_path )
+
except pysvn.ClientError, e:
+ if wb_subversion_utils.version_info.has_upgrade:
+ # is it the 'Working copy XXX is too old' error?
+ if e.args[1][0][1] == pysvn.svn_err.wc_upgrade_required:
+ self.need_checkout = False
+ self.need_upgrade = True
+ return
+
# is it the 'is not a working copy' error?
if e.args[1][0][1] == pysvn.svn_err.wc_not_directory:
+ # need_checkout
return
print 'Error: %s' % e.args[0]
@@ -282,12 +301,14 @@
self.all_files_status = self.client_fg.status( self.wc_path, recurse=p.view_recursive, ignore=False )
+
self.need_checkout = False
# sort list
self.all_files_status.sort( wb_subversion_utils.by_path )
+
# remember dir_status before filtering
- if len(self.all_files_status) > 0 and self.all_files_status[0].path == self.wc_path:
+ if len(self.all_files_status) > 0 and os.path.normcase( self.all_files_status[0].path ) == os.path.normcase( self.wc_path ):
self.dir_status = self.all_files_status[0]
del self.all_files_status[0]
@@ -372,7 +393,7 @@
return self.dir_status
def __proplist( self, path ):
- if os.path.isdir( path ):
+ if wb_platform_specific.uPathIsdir( path ):
prop_file = os.path.join( path, '.svn', 'dir-props' )
base_prop_file = os.path.join( path, '.svn', 'dir-prop-base' )
else:
@@ -382,10 +403,10 @@
result = {}
try:
- f = file( prop_file )
+ f = wb_platform_specific.uOpen( prop_file )
except EnvironmentError:
try:
- f = file( base_prop_file )
+ f = wb_platform_specific.uOpen( base_prop_file )
except EnvironmentError:
return result
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_branch_changes.py svn-workbench-1.6.6/Source/wb_subversion_report_branch_changes.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_branch_changes.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_branch_changes.py 2011-11-21 01:52:09.000000000 +0900
@@ -18,7 +18,6 @@
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
class ReportBranchChangesFrame(wx.Frame):
def __init__( self, app, project_info, all_files ):
@@ -177,6 +176,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_lock.py svn-workbench-1.6.6/Source/wb_subversion_report_lock.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_lock.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_lock.py 2011-11-21 01:52:09.000000000 +0900
@@ -16,13 +16,13 @@
import time
import pysvn
+import wb_config
import wb_ids
import wb_images
import wb_exceptions
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
class ReportLockFrame(wx.Frame):
def __init__( self, app, project_info, all_files, show_repos_locks=False ):
@@ -220,6 +220,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_revision_changes.py svn-workbench-1.6.6/Source/wb_subversion_report_revision_changes.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_revision_changes.py 2009-10-03 17:21:08.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_revision_changes.py 2011-11-21 01:52:09.000000000 +0900
@@ -23,7 +23,6 @@
import wb_subversion_diff
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
import wb_subversion_annotate
import wb_subversion_info_dialog
import wb_subversion_history
@@ -294,6 +293,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_updates.py svn-workbench-1.6.6/Source/wb_subversion_report_updates.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_updates.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_updates.py 2011-11-21 01:52:09.000000000 +0900
@@ -23,7 +23,6 @@
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
id_exclude = wx.NewId()
id_include = wx.NewId()
@@ -254,6 +253,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_tree_handler.py svn-workbench-1.6.6/Source/wb_subversion_tree_handler.py
--- svn-workbench-1.6.2/Source/wb_subversion_tree_handler.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_tree_handler.py 2012-03-03 23:31:36.000000000 +0900
@@ -33,6 +33,7 @@
import wb_clipboard
import wb_dialogs
import wb_config
+import wb_platform_specific
class SubversionProject(wb_tree_panel.TreeProjectItem):
def __init__( self, app, project_info ):
@@ -52,7 +53,7 @@
dir_status = self.project_info.getDirStatus()
if dir_status is None:
# no status available - make a guess
- if not os.path.exists( self.project_info.wc_path ):
+ if not wb_platform_specific.uPathExists( self.project_info.wc_path ):
# nothing there
return False
else:
@@ -61,7 +62,7 @@
for file in self.project_info.getTreeFilesStatus():
if( (file.entry is not None and file.entry.kind == pysvn.node_kind.dir)
- or (file.entry is None and os.path.isdir( file.path )) ):
+ or (file.entry is None and wb_platform_specific.uPathIsdir( file.path )) ):
return True
return False
@@ -71,7 +72,7 @@
for file in self.project_info.getTreeFilesStatus():
- if( (file.entry is None and os.path.isdir( file.path ))
+ if( (file.entry is None and wb_platform_specific.uPathIsdir( file.path ))
or (file.entry is not None and file.entry.kind == pysvn.node_kind.dir) ):
pi = wb_subversion_project_info.ProjectInfo( self.app, self.project_info )
name = os.path.basename( file.path )
@@ -92,17 +93,17 @@
dir_status = self.project_info.getDirStatus()
if dir_status is None:
# no status available - make a guess
- if not os.path.exists( self.project_info.wc_path ):
+ if not wb_platform_specific.uPathExists( self.project_info.wc_path ):
# nothing there
return wb_config.colour_status_need_checkout
- elif not os.path.exists( os.path.join( self.project_info.wc_path, '.svn' ) ):
+ elif not wb_platform_specific.uPathExists( os.path.join( self.project_info.wc_path, '.svn' ) ):
# not versioned
return wb_config.colour_status_unversioned
else:
# versioned and present
return wb_config.colour_status_normal
- elif not os.path.exists( dir_status.path ):
+ elif not wb_platform_specific.uPathExists( dir_status.path ):
# nothing there
return wb_config.colour_status_need_checkout
elif dir_status.text_status in [pysvn.wc_status_kind.unversioned, pysvn.wc_status_kind.ignored]:
@@ -126,6 +127,7 @@
state.unversioned = False
state.need_checkin = False
state.need_checkout = True
+ state.need_upgrade = False
state.conflict = False
state.file_exists = False
state.revertable = False
@@ -137,10 +139,11 @@
state.unversioned = True
state.need_checkin = True
state.need_checkout = False
+ state.need_upgrade = False
state.conflict = True
state.file_exists = True
- if not os.path.exists( dir_status.path ):
+ if not wb_platform_specific.uPathExists( dir_status.path ):
state.file_exists = False
text_status = dir_status.text_status
@@ -539,7 +542,7 @@
and dialog.getTemplateFilename() is not None ):
try:
template_filename = os.path.join( template_dir, dialog.getTemplateFilename() )
- t = file( template_filename, 'r' )
+ t = wb_platform_specific.uOpen( template_filename, 'r' )
template_contents = t.read()
t.close()
@@ -551,7 +554,7 @@
try:
new_filename = os.path.join( self.project_info.wc_path, dialog.getNewFilename() )
- f = file( new_filename, 'w' )
+ f = wb_platform_specific.uOpen( new_filename, 'w' )
f.write( template_contents )
f.close()
@@ -799,7 +802,7 @@
self.app.log_client_error( e )
else:
try:
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
except (OSError,IOError), e:
self.app.log.error( str(e) )
@@ -887,11 +890,26 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
+ self.app.refreshFrame()
+
+ def Cmd_Dir_Upgrade( self ):
+ self.app.setAction( T_('Upgrade %s...') % self.project_info.wc_path )
+
+ try:
+ self.project_info.client_fg.upgrade( self.project_info.wc_path )
+
+ except pysvn.ClientError, e:
+ self.app.log_client_error( e )
+
+ self.app.clearProgress()
+ self.app.setAction( T_('Ready') )
self.app.refreshFrame()
def Cmd_Dir_Copy( self, all_filenames ):
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_utils.py svn-workbench-1.6.6/Source/wb_subversion_utils.py
--- svn-workbench-1.6.2/Source/wb_subversion_utils.py 2009-09-14 01:02:30.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_utils.py 2011-11-21 07:37:53.000000000 +0900
@@ -25,6 +25,8 @@
self.notify_action_has_failed_lock = hasattr( pysvn.wc_notify_action, 'failed_lock' )
self.has_depth = hasattr( pysvn, 'depth' )
self.notify_action_has_property_events = hasattr( pysvn.wc_notify_action, 'property_added' )
+ self.notify_action_has_upgrade_events = hasattr( pysvn.wc_notify_action, 'upgraded_path' )
+ self.has_upgrade = self.notify_action_has_upgrade_events
version_info = svn_version_info()
@@ -150,6 +152,33 @@
wc_notify_action_map[ pysvn.wc_notify_action.tree_conflict ] = 'tree_conflict'
wc_notify_action_map[ pysvn.wc_notify_action.failed_external ] = 'failed_external'
+if version_info.notify_action_has_upgrade_events:
+ wc_notify_action_map[ pysvn.wc_notify_action.upgraded_path ] = 'upgraded_path'
+ wc_notify_action_map[ pysvn.wc_notify_action.update_started ] = "update_started"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_skip_obstruction ] = "update_skip_obstruction"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_skip_working_only ] = "update_skip_working_only"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_external_removed ] = "update_external_removed"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_add ] = "update_shadowed_add"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_update ] = "update_shadowed_update"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_delete ] = "update_shadowed_delete"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_record_info ] = "merge_record_info"
+ wc_notify_action_map[ pysvn.wc_notify_action.upgraded_path ] = "upgraded_path"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_record_info_begin ] = "merge_record_info_begin"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_elide_info ] = "merge_elide_info"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch ] = "patch"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_applied_hunk ] = "patch_applied_hunk"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_rejected_hunk ] = "patch_rejected_hunk"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_hunk_already_applied ] = "patch_hunk_already_applied"
+ wc_notify_action_map[ pysvn.wc_notify_action.commit_copied ] = "commit_copied"
+ wc_notify_action_map[ pysvn.wc_notify_action.commit_copied_replaced ] = "commit_copied_replaced"
+ wc_notify_action_map[ pysvn.wc_notify_action.url_redirect ] = "url_redirect"
+ wc_notify_action_map[ pysvn.wc_notify_action.path_nonexistent ] = "path_nonexistent"
+ wc_notify_action_map[ pysvn.wc_notify_action.exclude ] = "exclude"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_conflict ] = "failed_conflict"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_missing ] = "failed_missing"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_out_of_date ] = "failed_out_of_date"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_no_parent ] = "failed_no_parent"
+
wc_notify_type_map = {
pysvn.wc_notify_action.add: 'A',
pysvn.wc_notify_action.commit_added: 'C',
@@ -191,6 +220,32 @@
wc_notify_type_map[ pysvn.wc_notify_action.tree_conflict ] = None
wc_notify_type_map[ pysvn.wc_notify_action.failed_external ] = None
+if version_info.notify_action_has_upgrade_events:
+ wc_notify_type_map[ pysvn.wc_notify_action.upgraded_path ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_started ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_skip_obstruction ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_skip_working_only ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_external_removed ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_add ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_update ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_delete ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_record_info ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.upgraded_path ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_record_info_begin ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_elide_info ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_applied_hunk ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_rejected_hunk ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_hunk_already_applied ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.commit_copied ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.commit_copied_replaced ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.url_redirect ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.path_nonexistent ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.exclude ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_conflict ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_missing ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_out_of_date ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_no_parent ] = None
#
# format the concise status from file
diff -Nru svn-workbench-1.6.2/Source/wb_tree_panel.py svn-workbench-1.6.6/Source/wb_tree_panel.py
--- svn-workbench-1.6.2/Source/wb_tree_panel.py 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_tree_panel.py 2012-07-25 06:31:59.000000000 +0900
@@ -35,6 +35,7 @@
self.unversioned = False
self.need_checkin = False
self.need_checkout = False
+ self.need_upgrade = False
self.conflict = False
self.file_exists = False
self.is_folder = True
@@ -127,13 +128,11 @@
dc.Clear()
w, h = self.GetSize()
if self.FindFocus() == self.tree_ctrl:
- print 'tree focus'
dc.SetPen( wx.Pen( "red", 1 ) )
dc.DrawRectangle( 0, 0, w, h )
else:
dc.SetPen( wx.Pen( "green", 1 ) )
dc.DrawRectangle( 0, 0, w, h )
- print 'tree unfocus'
event.Skip()
def initFrame( self ):
@@ -266,6 +265,7 @@
if first_item:
self.tree_ctrl.SelectItem( first_item )
+ # QQQ: EnsureVisible causes an assert in wxPython 2.8.12.1 on Mac OS X
self.tree_ctrl.EnsureVisible( first_item )
def updateTreeSelectedItem( self ):
@@ -318,12 +318,14 @@
child_item, cookie = self.tree_ctrl.GetFirstChild( this_item )
while child_item:
child_handler = self.tree_ctrl.GetPyData( child_item )
+ # Since WX 2.8.11.1 need to call updateStatus() here - guess that a callback sequence changed
+ child_handler.updateStatus()
self.tree_ctrl.SetItemHasChildren( child_item, child_handler.mayExpand() )
self.tree_ctrl.SetItemTextColour( child_item, child_handler.getTreeNodeColour() )
child_item, cookie = self.tree_ctrl.GetNextChild( this_item, cookie )
- # set the has children state
+ # set the has-children state
self.tree_ctrl.SetItemHasChildren( this_item, len(project_info_list) > 0 )
def gotoBookmark( self, bookmark_name ):
@@ -768,6 +770,9 @@
def OnSpUpdateTo( self ):
return self.Sp_Dispatch( 'Cmd_Dir_UpdateTo' )
+ def OnSpUpgrade( self ):
+ return self.Sp_Dispatch( 'Cmd_Dir_Upgrade' )
+
#----------------------------------------
def OnSpCopy( self, filename_list ):
return self.Sp_DispatchDrop( 'Cmd_Dir_Copy', filename_list )
diff -Nru svn-workbench-1.6.2/Source/wb_version.py svn-workbench-1.6.6/Source/wb_version.py
--- svn-workbench-1.6.2/Source/wb_version.py 2010-01-04 00:53:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_version.py 2012-03-04 06:15:22.000000000 +0900
@@ -13,5 +13,5 @@
'''
major = 1
minor = 6
-patch = 2
-build = 1283
+patch = 6
+build = 1465
diff -Nru svn-workbench-1.6.2/debian/changelog svn-workbench-1.6.6/debian/changelog
--- svn-workbench-1.6.2/debian/changelog 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/debian/changelog 2012-07-25 06:31:59.000000000 +0900
@@ -1,3 +1,13 @@
+svn-workbench (1.6.6-1) UNRELEASED; urgency=low
+
+ * QA upload.
+ * New upstream release
+ - support subversion1.7
+ * debian/watch
+ - exec uupdate automatically
+
+ -- Hideki Yamane <henrich@debian.org> Wed, 25 Jul 2012 05:16:20 +0900
+
svn-workbench (1.6.2-2) unstable; urgency=low
* Orphan the package.
diff -Nru svn-workbench-1.6.2/debian/watch svn-workbench-1.6.6/debian/watch
--- svn-workbench-1.6.2/debian/watch 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/debian/watch 2012-07-25 06:31:59.000000000 +0900
@@ -1,2 +1,2 @@
version=3
-http://pysvn.tigris.org/project_downloads.html .*/WorkBench-(.*)\.tar\.gz
+http://pysvn.tigris.org/project_downloads.html .*/WorkBench-(.*)\.tar\.gz debian uupdate
diff -Nru svn-workbench-1.6.2/Builder/builder_custom_init.cmd svn-workbench-1.6.6/Builder/builder_custom_init.cmd
--- svn-workbench-1.6.2/Builder/builder_custom_init.cmd 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Builder/builder_custom_init.cmd 2011-11-06 23:19:48.000000000 +0900
@@ -4,12 +4,10 @@
set PY_MAJ=2
if not "%1" == "" set PY_MAJ=%1
-set PY_MIN=6
+set PY_MIN=7
if not "%2" == "" set PY_MIN=%2
-set BUILD_TYPE=Release
-if not "%3" == "" set BUILD_TYPE=%3
-if not "%4" == "" set SVN_VER_MAJ_MIN=%4
+if not "%3" == "" set SVN_VER_MAJ_MIN=%3
if "%SVN_VER_MAJ_MIN%" == "" set /p SVN_VER_MAJ_MIN="Build against Subversion Version [maj.min]: "
if "%SVN_VER_MAJ_MIN%" == "" goto :eof
@@ -22,8 +20,10 @@
if "%PY_MAJ%.%PY_MIN%" == "2.4" set COMPILER=msvc71
if "%PY_MAJ%.%PY_MIN%" == "2.5" set COMPILER=msvc71
if "%PY_MAJ%.%PY_MIN%" == "2.6" set COMPILER=msvc90
+if "%PY_MAJ%.%PY_MIN%" == "2.7" set COMPILER=msvc90
if "%PY_MAJ%.%PY_MIN%" == "3.0" set COMPILER=msvc90
if "%PY_MAJ%.%PY_MIN%" == "3.1" set COMPILER=msvc90
+if "%PY_MAJ%.%PY_MIN%" == "3.2" set COMPILER=msvc90
if exist ..\..\ReleaseEngineering\win32-%COMPILER%\software-versions-%SVN_VER_MAJ_MIN%.cmd (
pushd ..\..\ReleaseEngineering\win32-%COMPILER%
@@ -31,24 +31,24 @@
popd
)
-rem see if there is a built pysvn.pyd
+rem see if there is a built pysvn
if not "%TARGET%" == "" set PYSVN_PYTHONPATH=%TARGET%\py%PY_MAJ%%PY_MIN%_pysvn\Source
-if not "%TARGET%" == "" set PYTHONPATH=%PYSVN_PYTHONPATH%
+if not "%TARGET%" == "" set PYTHONPATH=%PYSVN_PYTHONPATH%;%WORKDIR%\Source
+if "%TARGET%" == "" set PYTHONPATH=%WORKDIR%\Source
+
echo PYTHONPATH %PYTHONPATH%
set MEINC_INSTALLER_DIR=%WORKDIR%\Import\MEINC_Installer-%MEINC_INSTALLER_VER%-py%PY_MAJ%%PY_MIN%-win32
-set PYCHECKER_DIR=%WORKDIR%\Import\PyChecker
-set INCLUDE=%MEINC_INSTALLER_DIR%;%PYCHECKER_DIR%;%INCLUDE%
-set SUBVERSION=%TARGET%\subversion-%SVN_VER%
-set APR=%SUBVERSION%
-set PY=c:\python%PY_MAJ%%PY_MIN%
-set PYLIB=python%PY_MAJ%%PY_MIN%
+set INCLUDE=%MEINC_INSTALLER_DIR%;%INCLUDE%
+
+set PY=c:\python%PY_MAJ%%PY_MIN%.win32
+if not exist %PY%\python.exe set PY=c:\python%PY_MAJ%%PY_MIN%
+
set PYTHON=%PY%\python.exe
rem Need python and SVN on the path
-rem need c:\unxutils on the path to access the gettext utilities
-PATH %PY%;%SUBVERSION%\%BUILD_TYPE%\bin;c:\unxutils;%PATH%
+PATH %PY%;%SVN_BIN%;c:\UnxUtils;%PATH%
-python -c "import sys;print 'Info: Python Version',sys.version"
-python -c "import pysvn;print 'Info: pysvn Version',pysvn.version,'svn version',pysvn.svn_version"
+%PYTHON% -c "import sys;print 'Info: Python Version',sys.version"
+%PYTHON% -c "import pysvn;print 'Info: pysvn Version',pysvn.version,'svn version',pysvn.svn_version"
popd
diff -Nru svn-workbench-1.6.2/Builder/builder_custom_init.sh svn-workbench-1.6.6/Builder/builder_custom_init.sh
--- svn-workbench-1.6.2/Builder/builder_custom_init.sh 2009-09-26 20:02:40.000000000 +0900
+++ svn-workbench-1.6.6/Builder/builder_custom_init.sh 2011-11-27 23:56:01.000000000 +0900
@@ -9,12 +9,12 @@
if [ "$(uname)" = "Darwin" ]
then
# default to 2.3 on Mac OS X
- PREF_VER=2.6
+ PREF_VER=2.7
else
PREF_VER=
fi
fi
-for PY_VER in ${PREF_VER} 2.6 2.5
+for PY_VER in ${PREF_VER} 2.7 2.6 2.5
do
# used in pick python to use in Builder driver makefile
export PYTHON=$( which python${PY_VER} )
@@ -31,11 +31,8 @@
export WC_SVNVERSION=svnversion
fi
-export PYCXX=${WORKDIR}/Import/pycxx_${PYCXXVER}
-
export MEINC_INSTALLER_DIR=${WORKDIR}/Import/MEINC_Installer
-export PYCHECKER_DIR=${WORKDIR}/Import/PyChecker
-for _DIR in ${WORKDIR}/../Extension/Source ${WORKDIR}/../py${PYSVN_PY_VER}_pysvn/Source
+for _DIR in ${WORKDIR}/../Extension/Source ${WORKDIR}/../py${PYSVN_PY_VER}_pysvn_python_org//Source
do
if [ -e "${_DIR}" ]
then
diff -Nru svn-workbench-1.6.2/Builder/linux.mak svn-workbench-1.6.6/Builder/linux.mak
--- svn-workbench-1.6.2/Builder/linux.mak 2004-08-07 19:32:21.000000000 +0900
+++ svn-workbench-1.6.6/Builder/linux.mak 2010-11-19 00:29:25.000000000 +0900
@@ -12,6 +12,7 @@
cd ../Import/MEINC_Installer/source/linux && $(PYTHON) Make.py && $(MAKE) && rm -f ../../config.dat
clean:
+ find .. -name '*.pyc' -exec rm {} ';'
cd ../Source && $(MAKE) -f linux.mak clean
cd ../Kit/Linux && rm -rf tmp
cd ../Import/MEINC_Installer/source/linux && $(MAKE) clean
diff -Nru svn-workbench-1.6.2/Builder/version.info svn-workbench-1.6.6/Builder/version.info
--- svn-workbench-1.6.2/Builder/version.info 2009-10-03 17:06:15.000000000 +0900
+++ svn-workbench-1.6.6/Builder/version.info 2011-02-28 05:20:43.000000000 +0900
@@ -1,4 +1,4 @@
MAJOR=1
MINOR=6
-PATCH=2
+PATCH=6
BUILD=0
diff -Nru svn-workbench-1.6.2/INSTALL.html svn-workbench-1.6.6/INSTALL.html
--- svn-workbench-1.6.2/INSTALL.html 2008-12-03 07:25:19.000000000 +0900
+++ svn-workbench-1.6.6/INSTALL.html 2011-02-21 03:45:46.000000000 +0900
@@ -4,7 +4,7 @@
<head>
<title>Installing pysvn Workbench</title>
<style type="text/css">
-pre
+pre
{
max-width: 40em;
margin-left: 4em;
@@ -22,11 +22,13 @@
<h2>Prerequisites</h2>
<ul>
-<li>Python 2.4 or later</li>
+<li><a href="http://www.python.org/">Python</a> version 2.4 or later.</li>
-<li>Install the pysvn Extension 1.5.0 or later.</li>
+<li>Install the <a href="http://pysvn.tigris.org/">pysvn</a> Extension 1.5.0 or later.</li>
-<li>Install wxPython verison 2.6.1.0 or better.</li>
+<li>Install <a href="http://www.wxpython.org/">wxPython</a> version 2.6.1.0 or better.</li>
+
+<li>If necessary install <a href="http://sourceforge.net/projects/pywin32/">pywin32</a> version 2.8.8.0 or better.</li>
</ul>
<h2>Preparing to run WorkBench</h2>
@@ -44,5 +46,12 @@
<p>In the <code>Source</code> folder:</p>
<pre>python wb_main.py</pre>
+<h2>Troubleshooting</h2>
+
+<p>Check the output from wb_main.py. You can prevent wb_main.py redirecting stdout by running as:</p>
+<pre>python wb_main.py --noredirect</pre>
+
+<p>On Windows does not have a usable stdout instead check "%TEMP%\workbench.tmp" for Python messages and errors.</p>
+
</body>
</html>
diff -Nru svn-workbench-1.6.2/Kit/Win32/msvc90_system_files.iss svn-workbench-1.6.6/Kit/Win32/msvc90_system_files.iss
--- svn-workbench-1.6.2/Kit/Win32/msvc90_system_files.iss 2009-09-26 07:01:20.000000000 +0900
+++ svn-workbench-1.6.6/Kit/Win32/msvc90_system_files.iss 2011-11-06 23:19:48.000000000 +0900
@@ -3,8 +3,8 @@
;
; begin VC system files
-Source: "c:\Program Files\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest"; DestDir: "{app}"
-Source: "c:\Program Files\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcm90.dll"; DestDir: "{app}"
-Source: "c:\Program Files\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcp90.dll"; DestDir: "{app}"
-Source: "c:\Program Files\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcr90.dll"; DestDir: "{app}"
+Source: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest"; DestDir: "{app}"
+Source: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcm90.dll"; DestDir: "{app}"
+Source: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcp90.dll"; DestDir: "{app}"
+Source: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcr90.dll"; DestDir: "{app}"
; end VC system files
diff -Nru svn-workbench-1.6.2/Kit/Win32/win32.mak svn-workbench-1.6.6/Kit/Win32/win32.mak
--- svn-workbench-1.6.2/Kit/Win32/win32.mak 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Kit/Win32/win32.mak 2011-11-06 23:19:48.000000000 +0900
@@ -4,7 +4,7 @@
copy ..\..\LICENSE.txt tmp\workbench_LICENSE.txt
copy ..\..\Source\bin\wb.exe tmp\WorkBench.exe
copy ..\..\Source\bin\wb.exe.manifest tmp\WorkBench.exe.manifest
- "c:\Program Files\Inno Setup 5\ISCC.exe" tmp\workbench-branded.iss
+ "c:\Program Files (x86)\Inno Setup 5\ISCC.exe" tmp\workbench-branded.iss
tmp\setup_copy.cmd
info_before.txt: workbench-branded.iss
@@ -16,7 +16,7 @@
python setup_version_handling.py
debug:
- "c:\Program Files\Inno Setup 5\Compil32.exe" workbench-branded.iss
+ "c:\Program Files (x86)\Inno Setup 5\Compil32.exe" workbench-branded.iss
clean:
if exist tmp rmdir /s /q tmp
diff -Nru svn-workbench-1.6.2/Kit/Win32/workbench.iss svn-workbench-1.6.6/Kit/Win32/workbench.iss
--- svn-workbench-1.6.2/Kit/Win32/workbench.iss 2009-10-03 17:35:08.000000000 +0900
+++ svn-workbench-1.6.6/Kit/Win32/workbench.iss 2012-03-03 19:53:31.000000000 +0900
@@ -12,7 +12,7 @@
[Setup]
AppName=WorkBench
AppVerName=WorkBench UNCONTROLLED
-AppCopyright=Copyright (C) 2003-2007 Barry A. Scott
+AppCopyright=Copyright (C) 2003-2012 Barry A. Scott
DefaultDirName={pf}\PySVN\WorkBench
DefaultGroupName=WorkBench for Subversion
UninstallDisplayIcon={app}\WorkBench.exe
@@ -32,5 +32,5 @@
Source: "workbench_LICENSE.txt"; DestDir: "{app}";
Source: "..\..\..\Docs\WorkBench.html"; DestDir: "{app}";
-Source: "WorkBench.exe"; DestDir: "{app}";
-Source: "WorkBench.exe.manifest"; DestDir: "{app}";
+Source: "WorkBench.exe"; DestDir: "{app}"; Flags: ignoreversion;
+Source: "WorkBench.exe.manifest"; DestDir: "{app}"; Flags: ignoreversion;
diff -Nru svn-workbench-1.6.2/LICENSE.txt svn-workbench-1.6.6/LICENSE.txt
--- svn-workbench-1.6.2/LICENSE.txt 2009-01-10 23:35:03.000000000 +0900
+++ svn-workbench-1.6.6/LICENSE.txt 2012-03-03 23:57:22.000000000 +0900
@@ -1,5 +1,5 @@
=================================================================
-Copyright (C) 2003-2009 Barry A. Scott. All rights reserved.
+Copyright (C) 2003-2012 Barry A. Scott. All rights reserved.
=================================================================
The Apache Software License, Version 1.1
diff -Nru svn-workbench-1.6.2/Source/I18N/pysvn_workbench_hu.po svn-workbench-1.6.6/Source/I18N/pysvn_workbench_hu.po
--- svn-workbench-1.6.2/Source/I18N/pysvn_workbench_hu.po 1970-01-01 09:00:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/I18N/pysvn_workbench_hu.po 2010-07-26 00:44:44.000000000 +0900
@@ -0,0 +1,2416 @@
+# Hungarian translation of pysvn/WorkBench
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the pysvn/WorkBench package.
+# Laszlo Csordas <csola48 at gmail dot com>, Copyright (C) 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pysvn_workbench_hu.current\n"
+"Report-Msgid-Bugs-To: barryscott@tigris.org\n"
+"POT-Creation-Date: 2009-09-30 19:53+0200\n"
+"PO-Revision-Date: 2010-07-11 10:15+0100\n"
+"Last-Translator: csola48 <csola48@gmail.com>\n"
+"Language-Team: magyar <csola48@gmail.hu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Language: Hungarian\n"
+"X-Poedit-Country: HUNGARY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: wb_app.py:111
+#: wb_frame.py:43
+msgid "PySVN WorkBench"
+msgstr "PySVN WorkBench"
+
+#: wb_app.py:185
+msgid "Work Bench starting"
+msgstr "WorkBench indÃtása"
+
+#: wb_bookmarks_dialogs.py:58
+#: wb_frame.py:158
+msgid "Manage Bookmarks"
+msgstr "KönyvjelzÅ? kezelése"
+
+#: wb_bookmarks_dialogs.py:73
+#: wb_bookmarks_dialogs.py:74
+#: wb_bookmarks_dialogs.py:75
+#: wb_bookmarks_dialogs.py:76
+msgid "Menu"
+msgstr "Menü"
+
+#: wb_bookmarks_dialogs.py:77
+msgid "WC Path"
+msgstr "Munkapéldány útvonala"
+
+#: wb_bookmarks_dialogs.py:93
+#: wb_preferences_dialog.py:374
+msgid " Delete "
+msgstr "Törlés"
+
+#: wb_bookmarks_dialogs.py:96
+msgid " Properties "
+msgstr "Tulajdonságok"
+
+#: wb_bookmarks_dialogs.py:99
+#: wb_bookmarks_dialogs.py:306
+#: wb_dialogs.py:59
+#: wb_dialogs.py:187
+#: wb_dialogs.py:244
+#: wb_dialogs.py:314
+#: wb_dialogs.py:388
+#: wb_dialogs.py:444
+#: wb_dialogs.py:511
+#: wb_dialogs.py:610
+#: wb_dialogs.py:736
+#: wb_preferences_dialog.py:59
+#: wb_project_dialogs.py:103
+#: wb_subversion_history.py:228
+#: wb_subversion_info_dialog.py:35
+#: wb_subversion_properties_dialog.py:175
+msgid " OK "
+msgstr " OK "
+
+#: wb_bookmarks_dialogs.py:100
+#: wb_bookmarks_dialogs.py:307
+#: wb_dialogs.py:60
+#: wb_dialogs.py:189
+#: wb_dialogs.py:246
+#: wb_dialogs.py:316
+#: wb_dialogs.py:390
+#: wb_dialogs.py:446
+#: wb_dialogs.py:513
+#: wb_dialogs.py:612
+#: wb_dialogs.py:739
+#: wb_preferences_dialog.py:61
+#: wb_project_dialogs.py:105
+#: wb_subversion_checkin.py:137
+#: wb_subversion_history.py:230
+#: wb_subversion_properties_dialog.py:177
+#: wb_subversion_report_updates.py:287
+msgid " Cancel "
+msgstr " Töröl"
+
+#: wb_bookmarks_dialogs.py:244
+msgid "Bookmark Properties"
+msgstr "KönyvjelzÅ? tulajdonságok"
+
+#: wb_bookmarks_dialogs.py:286
+msgid "WC Path: "
+msgstr "Munkapéldány útvonala: "
+
+#: wb_bookmarks_dialogs.py:290
+msgid "Menu1: "
+msgstr "Menü 1: "
+
+#: wb_bookmarks_dialogs.py:294
+msgid "Menu2: "
+msgstr "Menü 2: "
+
+#: wb_bookmarks_dialogs.py:298
+msgid "Menu3: "
+msgstr "Menü 3: "
+
+#: wb_bookmarks_dialogs.py:302
+msgid "Menu Name: "
+msgstr "Menü neve: "
+
+#: wb_dialogs.py:40
+msgid "Status"
+msgstr "Ã?llapot"
+
+#: wb_dialogs.py:42
+msgid "Filename"
+msgstr "Fájlnév"
+
+#: wb_dialogs.py:56
+msgid "Force"
+msgstr "KényszerÃt"
+
+#: wb_dialogs.py:134
+#: wb_subversion_checkin.py:140
+msgid "Insert Last Message"
+msgstr "Utolsó üzenet beszúrása"
+
+#: wb_dialogs.py:164
+msgid "Credentials"
+msgstr "Igazoló iratok"
+
+#: wb_dialogs.py:168
+msgid "Username:"
+msgstr "Felhasználó neve:"
+
+#: wb_dialogs.py:176
+msgid "Password:"
+msgstr "Jelszó:"
+
+#: wb_dialogs.py:182
+msgid "Always uses these credentials"
+msgstr "Már használt ez az igazoló irat"
+
+#: wb_dialogs.py:227
+#, python-format
+msgid "Trust server %s"
+msgstr "HitelesÃtÅ? szerver %s"
+
+#: wb_dialogs.py:232
+msgid "Server Certificate"
+msgstr "Szerver igazolás"
+
+#: wb_dialogs.py:239
+msgid "Always trust this server"
+msgstr "Ez a szerver már hitelesÃtett"
+
+#: wb_dialogs.py:290
+#: wb_frame.py:114
+#: wb_frame.py:157
+#: wb_subversion_list_handler.py:73
+msgid "Add"
+msgstr "Hozzáadás"
+
+#: wb_dialogs.py:294
+#: wb_dialogs.py:366
+msgid "From:"
+msgstr "Innen:"
+
+#: wb_dialogs.py:300
+msgid "Force Add"
+msgstr "KényszerÃtett hozzáadás"
+
+#: wb_dialogs.py:306
+msgid "Recursive Add"
+msgstr "RekurzÃv hozzáadás"
+
+#: wb_dialogs.py:362
+#: wb_frame.py:115
+#: wb_subversion_list_handler.py:150
+#: wb_subversion_list_handler.py:379
+#: wb_subversion_list_handler.py:386
+#: wb_subversion_tree_handler.py:794
+msgid "Rename"
+msgstr "�tnevezés"
+
+#: wb_dialogs.py:372
+msgid "To:"
+msgstr "Eddig:"
+
+#: wb_dialogs.py:383
+msgid "Force rename"
+msgstr "KényszerÃtett átnevezés"
+
+#: wb_dialogs.py:436
+#: wb_subversion_info_dialog.py:56
+#: wb_subversion_tree_handler.py:513
+msgid "Name:"
+msgstr "Név:"
+
+#: wb_dialogs.py:437
+msgid "New Folder"
+msgstr "�j dosszié"
+
+#: wb_dialogs.py:480
+#: wb_dialogs.py:485
+msgid "New File"
+msgstr "�j fájl"
+
+#: wb_dialogs.py:489
+msgid "New Filename:"
+msgstr "�j fájlnév:"
+
+#: wb_dialogs.py:504
+msgid "Template:"
+msgstr "Minta:"
+
+#: wb_dialogs.py:554
+msgid "Empty directory"
+msgstr "�res könyvtár"
+
+#: wb_dialogs.py:556
+msgid "Children files only"
+msgstr "Csak alfájlok"
+
+#: wb_dialogs.py:557
+msgid "Immediate children"
+msgstr "Közvetlen alfájlok"
+
+#: wb_dialogs.py:558
+msgid "Only already checked out descendants"
+msgstr "Csak már ellenÅ?rzött leszármazottak"
+
+#: wb_dialogs.py:559
+msgid "All descendants (Full recursion)"
+msgstr "Ã?sszes leszármazott (teljesen rekurzÃv)"
+
+#: wb_dialogs.py:570
+msgid "HEAD revision"
+msgstr "HEAD revÃzió"
+
+#: wb_dialogs.py:578
+#: wb_subversion_info_dialog.py:64
+#: wb_subversion_info_dialog.py:108
+msgid "Revision:"
+msgstr "RevÃzió:"
+
+#: wb_dialogs.py:590
+msgid "Apply on"
+msgstr "Alkalmazás be"
+
+#: wb_dialogs.py:593
+msgid "Recursive (all)"
+msgstr "RekurzÃv (összes)"
+
+#: wb_dialogs.py:599
+msgid "Depth:"
+msgstr "Mélység:"
+
+#: wb_dialogs.py:648
+msgid "Please enter a revision number > 0!"
+msgstr "Ã?rjon egy revÃzió számot, amely > 0!"
+
+#: wb_dialogs.py:653
+msgid "Please enter digits only!"
+msgstr "Csak számjegy lehet!"
+
+#: wb_dialogs.py:705
+msgid "Copy From:"
+msgstr "Másol innen:"
+
+#: wb_dialogs.py:708
+msgid "Copy To:"
+msgstr "Másol ide:"
+
+#: wb_dialogs.py:733
+#: wb_subversion_checkin.py:133
+msgid "Log message"
+msgstr "Napló bejegyzés"
+
+#: wb_dialogs.py:791
+#: wb_frame.py:122
+msgid "Create Tag"
+msgstr "Tag készÃtése"
+
+#: wb_dialogs.py:795
+#: wb_frame.py:123
+msgid "Create Branch"
+msgstr "Branch készÃtése"
+
+#: wb_diff_frame.py:49
+#: wb_show_diff_frame.py:32
+#, python-format
+msgid "Diff %(title1)s and %(title2)s"
+msgstr "Ã?sszehasonlÃtás a/z/ %(title1)s és a/z/ %(title2)s között"
+
+#: wb_diff_frame.py:59
+msgid "Expand folds"
+msgstr "Dosszié kibontása"
+
+#: wb_diff_frame.py:59
+msgid "Expand all folds"
+msgstr "�sszes dosszié kibontása"
+
+#: wb_diff_frame.py:60
+msgid "Collapse folds"
+msgstr "Dosszié bezárása"
+
+#: wb_diff_frame.py:60
+msgid "Collapse all folds"
+msgstr "�sszes dosszién bezárása"
+
+#: wb_diff_frame.py:62
+msgid "Toggle whitespace"
+msgstr "Látható szóköz bekapcsolása"
+
+#: wb_diff_frame.py:62
+msgid "Show/hide whitespace"
+msgstr "Látható szóköz mutatása/rejtése"
+
+#: wb_diff_frame.py:64
+msgid "Previous difference"
+msgstr "Korábbi különbség"
+
+#: wb_diff_frame.py:64
+msgid "Positions the cursor at the previous difference between the files"
+msgstr "Helyezze a kurzort a fájlok közötti megelÅ?zÅ? különbségre"
+
+#: wb_diff_frame.py:65
+msgid "Next difference"
+msgstr "KövetkezÅ? különbség"
+
+#: wb_diff_frame.py:65
+msgid "Positions the cursor at the next difference between the files"
+msgstr "Helyezze a kurzort a fájlok közötti következÅ? különbségre"
+
+#: wb_diff_frame.py:85
+msgid "Key: "
+msgstr "Kulcs: "
+
+#: wb_diff_frame.py:86
+msgid "Inserted text "
+msgstr "Beszúrt szöveg "
+
+#: wb_diff_frame.py:87
+msgid "Deleted text "
+msgstr "Törölt szöveg"
+
+#: wb_diff_frame.py:88
+msgid "Changed text"
+msgstr "Cserélt szöveg"
+
+#: wb_diff_frame.py:176
+#, python-format
+msgid "Diff %(change1)d of %(change2)d"
+msgstr "Ã?sszehasonlÃtás a/z/ %(change1)d és a/z/ %(change2)d között"
+
+#: wb_frame.py:62
+msgid "&Copy"
+msgstr "&Másol"
+
+#: wb_frame.py:62
+msgid "Copy Files"
+msgstr "Fájl másolása"
+
+#: wb_frame.py:63
+msgid "&Cut"
+msgstr "&Vágás"
+
+#: wb_frame.py:63
+msgid "Cut Files"
+msgstr "Fájl kivágása"
+
+#: wb_frame.py:64
+msgid "&Paste"
+msgstr "&Beillesztés"
+
+#: wb_frame.py:64
+msgid "Paste Files"
+msgstr "Fájl beillesztése"
+
+#: wb_frame.py:66
+msgid "&Clear log"
+msgstr "Napló kiürÃtése"
+
+#: wb_frame.py:66
+msgid "Clear the log window"
+msgstr "Napló ablak kiürÃtése"
+
+#: wb_frame.py:73
+msgid "&Preferences..."
+msgstr "&BeállÃtások"
+
+#: wb_frame.py:73
+#: wb_preferences_dialog.py:24
+msgid "Preferences"
+msgstr "BeállÃtások"
+
+#: wb_frame.py:74
+msgid "E&xit"
+msgstr "&Kilépés"
+
+#: wb_frame.py:74
+msgid "Exit the application"
+msgstr "Kilépés egy alkalmazásból"
+
+#: wb_frame.py:77
+#: wb_subversion_tree_handler.py:174
+msgid "&Command Shell"
+msgstr "&Terminál"
+
+#: wb_frame.py:77
+#: wb_toolbars.py:91
+msgid "Command Shell"
+msgstr "Terminál"
+
+#: wb_frame.py:78
+#: wb_subversion_tree_handler.py:175
+msgid "&File Browser"
+msgstr "&FájlkezelÅ?"
+
+#: wb_frame.py:78
+#: wb_toolbars.py:95
+msgid "File Browser"
+msgstr "FájlkezelÅ?"
+
+#: wb_frame.py:80
+#: wb_subversion_checkin.py:38
+#: wb_subversion_checkin.py:335
+#: wb_subversion_list_handler.py:42
+#: wb_subversion_report_updates.py:216
+msgid "Edit"
+msgstr "Szerkesztés"
+
+#: wb_frame.py:81
+#: wb_subversion_checkin.py:40
+#: wb_subversion_checkin.py:339
+#: wb_subversion_list_handler.py:45
+#: wb_subversion_report_updates.py:219
+msgid "Open"
+msgstr "Megnyitás"
+
+#: wb_frame.py:83
+#: wb_subversion_checkin.py:42
+#: wb_subversion_checkin.py:343
+#: wb_subversion_list_handler.py:48
+#: wb_subversion_tree_handler.py:177
+msgid "Diff WC vs. BASE..."
+msgstr "Ã?sszehasonlÃtás: munkapéldány és BASE..."
+
+#: wb_frame.py:84
+#: wb_subversion_checkin.py:43
+#: wb_subversion_checkin.py:344
+#: wb_subversion_list_handler.py:49
+#: wb_subversion_report_branch_changes.py:30
+#: wb_subversion_report_branch_changes.py:158
+#: wb_subversion_report_lock.py:38
+#: wb_subversion_report_lock.py:194
+#: wb_subversion_report_updates.py:38
+#: wb_subversion_report_updates.py:222
+#: wb_subversion_tree_handler.py:178
+msgid "Diff WC vs. HEAD..."
+msgstr "Ã?sszehasonlÃtás: munkapéldány és HEAD..."
+
+#: wb_frame.py:85
+#: wb_subversion_checkin.py:44
+#: wb_subversion_checkin.py:345
+#: wb_subversion_list_handler.py:50
+#: wb_subversion_report_branch_changes.py:31
+#: wb_subversion_report_branch_changes.py:159
+#: wb_subversion_report_lock.py:39
+#: wb_subversion_report_lock.py:195
+#: wb_subversion_report_updates.py:39
+#: wb_subversion_report_updates.py:223
+msgid "Diff WC vs. branch origin BASE..."
+msgstr "Ã?sszehasonlÃtás: munkapéldány kontra branch eredeti BASE..."
+
+#: wb_frame.py:86
+#: wb_subversion_checkin.py:45
+#: wb_subversion_checkin.py:346
+#: wb_subversion_list_handler.py:51
+#: wb_subversion_report_branch_changes.py:32
+#: wb_subversion_report_branch_changes.py:160
+#: wb_subversion_report_lock.py:40
+#: wb_subversion_report_lock.py:196
+#: wb_subversion_report_updates.py:40
+#: wb_subversion_report_updates.py:224
+msgid "Diff WC vs. branch origin HEAD..."
+msgstr "Ã?sszehasonlÃtás: munkapéldány kontra branch eredeti HEAD..."
+
+#: wb_frame.py:89
+#: wb_subversion_list_handler.py:52
+msgid "Conflict"
+msgstr "Konfliktus"
+
+#: wb_frame.py:90
+#: wb_subversion_list_handler.py:53
+msgid "Diff Conflict Old vs. Mine..."
+msgstr "Ã?sszehasonlÃtó konfliktus: régi és saját..."
+
+#: wb_frame.py:91
+#: wb_subversion_list_handler.py:54
+msgid "Diff Conflict Mine vs. New..."
+msgstr "Ã?sszehasonlÃtó konfliktus: saját és új..."
+
+#: wb_frame.py:92
+#: wb_subversion_list_handler.py:55
+msgid "Diff Conflict Old vs. New..."
+msgstr "Ã?sszehasonlÃtó konfliktus: régi és új..."
+
+#: wb_frame.py:94
+#: wb_subversion_list_handler.py:57
+msgid "Resolved Conflict"
+msgstr "Feloldott konfliktus"
+
+#: wb_frame.py:97
+#: wb_subversion_checkin.py:48
+#: wb_subversion_checkin.py:348
+#: wb_subversion_list_handler.py:60
+#: wb_subversion_report_branch_changes.py:35
+#: wb_subversion_report_branch_changes.py:162
+#: wb_subversion_report_lock.py:43
+#: wb_subversion_report_lock.py:198
+#: wb_subversion_report_revision_changes.py:50
+#: wb_subversion_report_revision_changes.py:279
+#: wb_subversion_report_updates.py:43
+#: wb_subversion_report_updates.py:226
+msgid "Annotate..."
+msgstr "Megjegyzés..."
+
+#: wb_frame.py:98
+#: wb_subversion_checkin.py:49
+#: wb_subversion_checkin.py:349
+#: wb_subversion_list_handler.py:61
+#: wb_subversion_report_branch_changes.py:36
+#: wb_subversion_report_branch_changes.py:163
+#: wb_subversion_report_lock.py:44
+#: wb_subversion_report_lock.py:199
+#: wb_subversion_report_revision_changes.py:51
+#: wb_subversion_report_revision_changes.py:280
+#: wb_subversion_report_updates.py:44
+#: wb_subversion_report_updates.py:227
+#: wb_subversion_tree_handler.py:180
+msgid "Log history..."
+msgstr "Napló elÅ?zmények..."
+
+#: wb_frame.py:99
+#: wb_subversion_checkin.py:50
+#: wb_subversion_checkin.py:350
+#: wb_subversion_list_handler.py:62
+#: wb_subversion_report_branch_changes.py:37
+#: wb_subversion_report_branch_changes.py:164
+#: wb_subversion_report_lock.py:45
+#: wb_subversion_report_lock.py:200
+#: wb_subversion_report_revision_changes.py:52
+#: wb_subversion_report_revision_changes.py:281
+#: wb_subversion_tree_handler.py:181
+msgid "Information..."
+msgstr "Információ..."
+
+#: wb_frame.py:100
+#: wb_subversion_checkin.py:51
+#: wb_subversion_checkin.py:351
+#: wb_subversion_list_handler.py:63
+#: wb_subversion_tree_handler.py:182
+msgid "Properties..."
+msgstr "Tulajdonságok..."
+
+#: wb_frame.py:102
+#: wb_subversion_list_handler.py:68
+#: wb_subversion_tree_handler.py:188
+msgid "Update"
+msgstr "FrissÃtés"
+
+#: wb_frame.py:103
+msgid "Update to..."
+msgstr "FrissÃtés..."
+
+#: wb_frame.py:104
+#: wb_subversion_list_handler.py:39
+#: wb_subversion_tree_handler.py:185
+msgid "Checkout"
+msgstr "EllenÅ?rzés"
+
+#: wb_frame.py:105
+#: wb_subversion_tree_handler.py:186
+msgid "Checkout to..."
+msgstr "EllenÅ?rzés..."
+
+#: wb_frame.py:107
+#: wb_subversion_list_handler.py:71
+#: wb_subversion_tree_handler.py:191
+msgid "Checkin..."
+msgstr "EllenÅ?rzés..."
+
+#: wb_frame.py:109
+#: wb_subversion_list_handler.py:65
+#: wb_subversion_report_lock.py:202
+msgid "Lock..."
+msgstr "Zárás..."
+
+#: wb_frame.py:110
+#: wb_subversion_list_handler.py:66
+#: wb_subversion_report_lock.py:203
+msgid "Unlock..."
+msgstr "Nyitás..."
+
+#: wb_frame.py:112
+#: wb_subversion_tree_handler.py:193
+msgid "New File..."
+msgstr "�j fájl..."
+
+#: wb_frame.py:113
+#: wb_subversion_tree_handler.py:194
+msgid "Make directory..."
+msgstr "Könyvtár készÃtése..."
+
+#: wb_frame.py:115
+#: wb_subversion_list_handler.py:74
+#: wb_subversion_tree_handler.py:196
+msgid "Rename..."
+msgstr "�tnevezés..."
+
+#: wb_frame.py:117
+#: wb_frame.py:167
+#: wb_subversion_list_handler.py:76
+#: wb_subversion_tree_handler.py:198
+msgid "Delete..."
+msgstr "Törlés..."
+
+#: wb_frame.py:117
+msgid "Delete"
+msgstr "Törlés"
+
+#: wb_frame.py:118
+#: wb_subversion_checkin.py:352
+#: wb_subversion_list_handler.py:77
+#: wb_subversion_tree_handler.py:199
+msgid "Revert..."
+msgstr "Visszavonás..."
+
+#: wb_frame.py:118
+#: wb_subversion_checkin.py:93
+#: wb_subversion_checkin.py:378
+#: wb_subversion_list_handler.py:399
+#: wb_subversion_tree_handler.py:819
+msgid "Revert"
+msgstr "Visszavonás"
+
+#: wb_frame.py:120
+#: wb_subversion_list_handler.py:79
+#: wb_subversion_tree_handler.py:201
+msgid "Clean up"
+msgstr "TisztÃtás"
+
+#: wb_frame.py:120
+msgid "Clean up working copy"
+msgstr "Munkapéldány tisztÃtása"
+
+#: wb_frame.py:122
+msgid "Create Tag..."
+msgstr "Tag készÃtése..."
+
+#: wb_frame.py:123
+msgid "Create Branch..."
+msgstr "Branch készÃtése..."
+
+#: wb_frame.py:126
+msgid "Working copy Locks..."
+msgstr "Munkapéldány zárása..."
+
+#: wb_frame.py:126
+msgid "Locks held in Working Copy"
+msgstr "Munkapéldány zárva tartása"
+
+#: wb_frame.py:127
+msgid "Repository Locks..."
+msgstr "Tároló zárása..."
+
+#: wb_frame.py:127
+msgid "Locks held in Repository"
+msgstr "Tároló zárva tartása"
+
+#: wb_frame.py:129
+msgid "Changes..."
+msgstr "Változások..."
+
+#: wb_frame.py:129
+msgid "Changes available for checkin"
+msgstr "Változások használata ellenÅ?rzéshez"
+
+#: wb_frame.py:130
+msgid "Updates..."
+msgstr "FrissÃtés..."
+
+#: wb_frame.py:130
+msgid "Updates available in the Repository"
+msgstr "FrissÃtések használata a tárolóban"
+
+#: wb_frame.py:131
+msgid "Branch changes..."
+msgstr "Branch cseréje"
+
+#: wb_frame.py:131
+msgid "Files changed in this branch"
+msgstr "Fájlok cseréje ebben a branchban"
+
+#: wb_frame.py:134
+msgid "Show &Controlled files"
+msgstr "&EllenÅ?rzött fájlok mutatása"
+
+#: wb_frame.py:134
+msgid "Show Controlled files"
+msgstr "EllenÅ?rzött fájlok mutatása"
+
+#: wb_frame.py:135
+msgid "Show &Uncontrolled files"
+msgstr "EllenÅ?rizetlen fájlok mutatása"
+
+#: wb_frame.py:135
+msgid "Show Uncontrolled files"
+msgstr "EllenÅ?rizetlen fájlok mutatása"
+
+#: wb_frame.py:136
+msgid "Show &Ignored files"
+msgstr "Kihagyott fájlok mutatása"
+
+#: wb_frame.py:136
+msgid "Show ignored files"
+msgstr "Kihagyott fájlok mutatása"
+
+#: wb_frame.py:137
+msgid "Show &Only changed files"
+msgstr "Csak a módosÃtott fájlok mutatása"
+
+#: wb_frame.py:137
+msgid "Filter out unchanged files"
+msgstr "Filter kikapcsolása a nem változott fájloknál"
+
+#: wb_frame.py:139
+msgid "Show &Recursive files"
+msgstr "RekurzÃv fájlok mutatása"
+
+#: wb_frame.py:139
+msgid "Show recursive files"
+msgstr "RekurzÃv fájlok mutatása"
+
+#: wb_frame.py:141
+msgid "Use WorkBench Diff"
+msgstr "WorkBench összehasonlÃtó használata"
+
+#: wb_frame.py:142
+msgid "Use External GUI Diff"
+msgstr "KülsÅ? GUI összehasonlÃtó használata"
+
+#: wb_frame.py:143
+msgid "Use External Text Diff"
+msgstr "Szöveges összehasonlÃtó használata"
+
+#: wb_frame.py:144
+msgid "Use SVN Diff"
+msgstr "SVN összehasonlÃtó használata"
+
+#: wb_frame.py:146
+msgid "&Refresh\tF5"
+msgstr "FrissÃtés\tF5"
+
+#: wb_frame.py:146
+msgid "Refresh display"
+msgstr "KépernyÅ? frissÃtése"
+
+#: wb_frame.py:147
+msgid "&Automatic Refresh"
+msgstr "&Automatikus frissÃtés"
+
+#: wb_frame.py:147
+msgid "Automatic refresh"
+msgstr "Automatikus frissÃtés"
+
+#: wb_frame.py:157
+msgid "Add Bookmark"
+msgstr "KönyvjelzÅ? hozzáadása"
+
+#: wb_frame.py:158
+msgid "Manage..."
+msgstr "Intéz..."
+
+#: wb_frame.py:164
+#: wb_subversion_tree_handler.py:195
+msgid "Add..."
+msgstr "Hozzáad..."
+
+#: wb_frame.py:164
+msgid "Project Add"
+msgstr "Projekt hozzáadása"
+
+#: wb_frame.py:165
+msgid "Settings..."
+msgstr "BeállÃtások..."
+
+#: wb_frame.py:165
+#: wb_project_dialogs.py:303
+#: wb_tree_panel.py:574
+msgid "Project Settings"
+msgstr "Projekt beállÃtások"
+
+#: wb_frame.py:167
+#: wb_tree_panel.py:575
+#: wb_tree_panel.py:616
+msgid "Delete Project"
+msgstr "Projekt törlése"
+
+#: wb_frame.py:170
+msgid "&About..."
+msgstr "&Névjegy"
+
+#: wb_frame.py:170
+msgid "About the application"
+msgstr "Alkalmazás névjegye"
+
+#: wb_frame.py:174
+msgid "&File"
+msgstr "Fájl"
+
+#: wb_frame.py:175
+msgid "&Edit"
+msgstr "Szerkesztés"
+
+#: wb_frame.py:176
+msgid "&View"
+msgstr "Nézet"
+
+#: wb_frame.py:177
+#: wb_subversion_checkin.py:60
+#: wb_subversion_report_branch_changes.py:40
+#: wb_subversion_report_lock.py:48
+#: wb_subversion_report_revision_changes.py:55
+#: wb_subversion_report_updates.py:51
+msgid "&Actions"
+msgstr "Művelet"
+
+#: wb_frame.py:178
+msgid "&Reports"
+msgstr "Beszámoló"
+
+#: wb_frame.py:179
+msgid "&Bookmarks"
+msgstr "KönyvjelzÅ?"
+
+#: wb_frame.py:180
+msgid "&Project"
+msgstr "Projekt"
+
+#: wb_frame.py:181
+msgid "&Help"
+msgstr "Súgó"
+
+#: wb_frame.py:198
+msgid "Work Bench"
+msgstr "Work Bench"
+
+#: wb_frame.py:200
+#: wb_frame.py:483
+#: wb_subversion_checkin.py:257
+#: wb_subversion_list_handler_common.py:704
+#: wb_subversion_list_handler_common.py:737
+#: wb_subversion_list_handler_common.py:773
+#: wb_subversion_list_handler_common.py:821
+#: wb_subversion_list_handler_common.py:868
+#: wb_subversion_list_handler_common.py:906
+#: wb_subversion_list_handler_common.py:951
+#: wb_subversion_list_handler_common.py:1017
+#: wb_subversion_list_handler.py:467
+#: wb_subversion_list_handler.py:520
+#: wb_subversion_report_revision_changes.py:143
+#: wb_subversion_report_revision_changes.py:180
+#: wb_subversion_report_revision_changes.py:219
+#: wb_subversion_report_updates.py:159
+#: wb_subversion_tree_handler.py:244
+#: wb_subversion_tree_handler.py:282
+#: wb_subversion_tree_handler.py:296
+#: wb_subversion_tree_handler.py:325
+#: wb_subversion_tree_handler.py:348
+#: wb_subversion_tree_handler.py:416
+#: wb_subversion_tree_handler.py:451
+#: wb_subversion_tree_handler.py:490
+#: wb_subversion_tree_handler.py:629
+#: wb_subversion_tree_handler.py:672
+#: wb_subversion_tree_handler.py:779
+#: wb_subversion_tree_handler.py:894
+msgid "Ready"
+msgstr "Kész"
+
+#: wb_frame.py:465
+#, python-format
+msgid "Work Bench version: %s"
+msgstr "Work Bench verzió: %s"
+
+#: wb_frame.py:469
+msgid ""
+"\n"
+"Copyright Barry Scott (c) 2003-2009. All rights reserved"
+msgstr ""
+"\n"
+"Copyright Barry Scott (C) 2003-2009. Minden jog fenntartva!"
+
+#: wb_frame.py:673
+#, python-format
+msgid "Adding bookmark to %s"
+msgstr "KönyvjelzÅ? hozzáadása %s"
+
+#: wb_list_panel_common.py:108
+#: wb_list_panel_common.py:511
+#: wb_subversion_list_handler_common.py:31
+#: wb_subversion_list_handler_common.py:110
+#: wb_subversion_list_handler_common.py:243
+#: wb_subversion_report_branch_changes.py:147
+#: wb_subversion_report_lock.py:183
+#: wb_subversion_report_revision_changes.py:266
+#: wb_subversion_report_updates.py:205
+msgid "Name"
+msgstr "Név"
+
+#: wb_list_panel_common.py:511
+#: wb_subversion_annotate.py:59
+#: wb_subversion_history.py:71
+#: wb_subversion_history.py:377
+#: wb_subversion_history.py:503
+#: wb_subversion_list_handler_common.py:35
+#: wb_subversion_list_handler_common.py:114
+#: wb_subversion_list_handler_common.py:246
+msgid "Author"
+msgstr "SzerzÅ?"
+
+#: wb_preferences_dialog.py:32
+msgid "PreferencesDialog"
+msgstr "BeállÃtások párbeszéd"
+
+#: wb_preferences_dialog.py:106
+msgid "Editor"
+msgstr "SzerkesztÅ?"
+
+#: wb_preferences_dialog.py:111
+msgid "Editor: "
+msgstr "SzerkesztÅ?"
+
+#: wb_preferences_dialog.py:114
+msgid "Edit Arguments: "
+msgstr "SzerkesztÅ? paraméterei:"
+
+#: wb_preferences_dialog.py:117
+#: wb_preferences_dialog.py:210
+#: wb_project_dialogs.py:58
+#: wb_project_dialogs.py:87
+#: wb_project_dialogs.py:477
+#: wb_project_dialogs.py:636
+msgid " Browse... "
+msgstr " Keres..."
+
+#: wb_preferences_dialog.py:143
+#: wb_preferences_dialog.py:267
+msgid "Executable files (*.exe)|*.exe"
+msgstr "Végrehajtható fájlok (*.exe)|*.exe"
+
+#: wb_preferences_dialog.py:145
+#: wb_preferences_dialog.py:269
+msgid "Applications|*.app|Executable files|*"
+msgstr "Alkalmazások|*.app|Végrehajtható fájlok|*"
+
+#: wb_preferences_dialog.py:147
+#: wb_preferences_dialog.py:271
+msgid "Executable files|*"
+msgstr "Végrehajtható fájlok|*"
+
+#: wb_preferences_dialog.py:152
+#: wb_preferences_dialog.py:276
+msgid "Choose an Executable file"
+msgstr "Végrehajtható fájl választása"
+
+#: wb_preferences_dialog.py:182
+msgid "You must enter a valid editor executable"
+msgstr "Ã?rvényes szerkesztÅ? megadása szükséges"
+
+#: wb_preferences_dialog.py:183
+#: wb_preferences_dialog.py:573
+#: wb_preferences_dialog.py:584
+#: wb_preferences_dialog.py:631
+#: wb_preferences_dialog.py:644
+#: wb_preferences_dialog.py:695
+#: wb_preferences_dialog.py:761
+#: wb_preferences_dialog.py:773
+#: wb_preferences_dialog.py:968
+#: wb_subversion_checkin.py:314
+#: wb_subversion_list_handler.py:224
+#: wb_subversion_list_handler.py:464
+#: wb_subversion_list_handler.py:517
+#: wb_subversion_properties_dialog.py:93
+#: wb_subversion_properties_dialog.py:114
+#: wb_subversion_tree_handler.py:355
+#: wb_subversion_tree_handler.py:637
+#: wb_subversion_tree_handler.py:640
+#: wb_subversion_tree_handler.py:669
+#: wb_subversion_tree_handler.py:815
+#: wb_subversion_tree_handler.py:891
+msgid "Warning"
+msgstr "Vigyázat"
+
+#: wb_preferences_dialog.py:193
+msgid "Diff Tool"
+msgstr "Ã?sszehasonlÃtó eszköz"
+
+#: wb_preferences_dialog.py:201
+msgid "Work Bench Diff"
+msgstr "Work Bench összehasonlÃtó"
+
+#: wb_preferences_dialog.py:201
+msgid "External GUI Diff Command"
+msgstr "KülsÅ? GUI összehasonlÃtó parancs"
+
+#: wb_preferences_dialog.py:201
+msgid "External Text Diff"
+msgstr "KülsÅ? szöveges összehasonlÃtó"
+
+#: wb_preferences_dialog.py:201
+msgid "SVN diff"
+msgstr "SVN összehasonlÃtó"
+
+#: wb_preferences_dialog.py:215
+msgid "Mode: "
+msgstr "Módszer:"
+
+#: wb_preferences_dialog.py:219
+msgid "Diff Tool: "
+msgstr "Ã?sszehasonlÃtó eszköz:"
+
+#: wb_preferences_dialog.py:223
+msgid "Tool Arguments: "
+msgstr "Eszköz paraméterei:"
+
+#: wb_preferences_dialog.py:227
+msgid "Use"
+msgstr "Alkalmazás"
+
+#: wb_preferences_dialog.py:228
+msgid ""
+"%nl for left file name, %nr for right file name,\n"
+"%tl for left title, %tr for right title"
+msgstr ""
+"%nl bal oldali fájlnév, %nr jobb oldali fájl név,\n"
+"%tl for bal oldali cÃm, %tr jobb oldali cÃm"
+
+#: wb_preferences_dialog.py:293
+msgid "Shell"
+msgstr "Keret"
+
+#: wb_preferences_dialog.py:298
+msgid "Terminal Init Command: "
+msgstr "Terminál indÃtó parancs:"
+
+#: wb_preferences_dialog.py:306
+msgid "Terminal Program: "
+msgstr "Terminal program: "
+
+#: wb_preferences_dialog.py:323
+msgid "File Browser Program: "
+msgstr "Fájl keresÅ? program: "
+
+#: wb_preferences_dialog.py:358
+msgid "View"
+msgstr "Nézet"
+
+#: wb_preferences_dialog.py:366
+msgid "Exclude filename"
+msgstr "Kihagyott fájlnév"
+
+#: wb_preferences_dialog.py:372
+msgid " Add "
+msgstr " Hozzáad"
+
+#: wb_preferences_dialog.py:484
+msgid "Columns"
+msgstr "Oszlopok"
+
+#: wb_preferences_dialog.py:492
+#: wb_preferences_dialog.py:499
+msgid "Column"
+msgstr "Oszlop"
+
+#: wb_preferences_dialog.py:494
+#: wb_preferences_dialog.py:501
+msgid "Width"
+msgstr "Szélesség"
+
+#: wb_preferences_dialog.py:519
+#: wb_preferences_dialog.py:818
+msgid " Include --> "
+msgstr "Tartalmaz --> "
+
+#: wb_preferences_dialog.py:521
+#: wb_preferences_dialog.py:820
+msgid " <-- Exclude "
+msgstr " <-- Kihagy"
+
+#: wb_preferences_dialog.py:524
+#: wb_preferences_dialog.py:823
+msgid " Move Up "
+msgstr "Felfelé"
+
+#: wb_preferences_dialog.py:526
+#: wb_preferences_dialog.py:825
+msgid " Move Down "
+msgstr "Lefelé"
+
+#: wb_preferences_dialog.py:571
+#: wb_preferences_dialog.py:629
+#, python-format
+msgid "Width for %(name)s must be an number between %(min)d and %(max)d"
+msgstr "Szélesség értéke %(name)s egy %(min)d és %(max)d közötti szám kell legyen"
+
+#: wb_preferences_dialog.py:582
+#: wb_preferences_dialog.py:642
+#, python-format
+msgid "Width for %(name)s must be between %(min)d and %(max)d"
+msgstr "Szélesség értéke %(name)s %(min)d és %(max)d között kell legyen"
+
+#: wb_preferences_dialog.py:694
+msgid "You must include the Name column"
+msgstr "Szükséges tartalmaznia az oszlop nevét"
+
+#: wb_preferences_dialog.py:705
+#: wb_subversion_history.py:183
+msgid "Log History"
+msgstr "Napló elÅ?zmények"
+
+#: wb_preferences_dialog.py:711
+#: wb_subversion_history.py:194
+msgid "Show all entries"
+msgstr "�ssze bejegyzés mutatása"
+
+#: wb_preferences_dialog.py:711
+msgid "Show only"
+msgstr "Csak mutassa"
+
+#: wb_preferences_dialog.py:711
+msgid "Show since"
+msgstr "Mutat onnantól"
+
+#: wb_preferences_dialog.py:712
+msgid "Default mode: "
+msgstr "Alaphelyzet:"
+
+#: wb_preferences_dialog.py:716
+msgid "Default limit: "
+msgstr "Alapérték:"
+
+#: wb_preferences_dialog.py:719
+msgid "Default since interval (days): "
+msgstr "Eltelt idÅ?tartam napokban:"
+
+#: wb_preferences_dialog.py:722
+msgid "Default Include tags: "
+msgstr "Alapértelmezett tag:"
+
+#: wb_preferences_dialog.py:723
+#: wb_subversion_history.py:222
+msgid "Include tags in log history"
+msgstr "Tagek az elÅ?zmények naplóban"
+
+#: wb_preferences_dialog.py:760
+msgid "Limit must be greater then 0"
+msgstr "Nagyobb kell legyen az érték, mint 0"
+
+#: wb_preferences_dialog.py:772
+msgid "Since days must be greater then 0"
+msgstr "Eltelt napok értéke nagyobb, mint 0"
+
+#: wb_preferences_dialog.py:791
+msgid "Toolbar"
+msgstr "Eszköztár"
+
+#: wb_preferences_dialog.py:800
+#: wb_preferences_dialog.py:805
+msgid "Toolbar Group"
+msgstr "Eszköztár csoport"
+
+#: wb_preferences_dialog.py:829
+msgid "Display toolbar: "
+msgstr "Eszköztár megjelenÃtése:"
+
+#: wb_preferences_dialog.py:830
+msgid "Enabled"
+msgstr "Engedélyezett"
+
+#: wb_preferences_dialog.py:832
+msgid "Orientation: "
+msgstr "Irányultság:"
+
+#: wb_preferences_dialog.py:833
+msgid "Horizontal"
+msgstr "VÃzszintes"
+
+#: wb_preferences_dialog.py:833
+msgid "Vertical"
+msgstr "FüggÅ?leges"
+
+#: wb_preferences_dialog.py:839
+msgid "Small"
+msgstr "Kicsi"
+
+#: wb_preferences_dialog.py:839
+msgid "Large"
+msgstr "Nagy"
+
+#: wb_preferences_dialog.py:839
+msgid "Huge"
+msgstr "Hatalmas"
+
+#: wb_preferences_dialog.py:841
+msgid "Icon size: "
+msgstr "Ikon mérete:"
+
+#: wb_preferences_dialog.py:967
+msgid "You must include at least one Toolbar group"
+msgstr "Legalább egy eszköztár csoportot kell tartalmazni"
+
+#: wb_preferences_dialog.py:978
+msgid "Advanced"
+msgstr "Haladó"
+
+#: wb_preferences_dialog.py:985
+msgid "Allow arbitrary paths for tag/branch"
+msgstr "�nkényes útvonalak megengedése tag/branch-ért"
+
+#: wb_preferences.py:117
+#, python-format
+msgid "Wrote preferences to %s"
+msgstr "Tulajdonságok Ãrása ide %s"
+
+#: wb_preferences.py:127
+#: wb_preferences.py:130
+#, python-format
+msgid "Reading preferences from %s"
+msgstr "Tulajdonságok kiolvasása innen %s"
+
+#: wb_project_dialogs.py:48
+msgid "Project"
+msgstr "Projekt"
+
+#: wb_project_dialogs.py:52
+msgid "Project Name:"
+msgstr "Projekt neve:"
+
+#: wb_project_dialogs.py:60
+#: wb_project_dialogs.py:475
+#: wb_project_dialogs.py:634
+#: wb_project_dialogs.py:744
+msgid "Working copy Path:"
+msgstr "Munkapéldány útvonal:"
+
+#: wb_project_dialogs.py:67
+msgid "Subversion Trunk URL:"
+msgstr "Subversion törzs URL:"
+
+#: wb_project_dialogs.py:73
+msgid "Subversion Tags URL:"
+msgstr "Subversion tagek URL:"
+
+#: wb_project_dialogs.py:79
+msgid "Subversion Branches URL:"
+msgstr "Subversion branch URL:"
+
+#: wb_project_dialogs.py:85
+msgid "New File Template Folder: "
+msgstr "�j fájl sablon dosszié:"
+
+#: wb_project_dialogs.py:93
+msgid "Background Colour: "
+msgstr "HáttérszÃn:"
+
+#: wb_project_dialogs.py:94
+msgid "Use custom background colour"
+msgstr "Saját háttérszÃn használata"
+
+#: wb_project_dialogs.py:95
+msgid "Example"
+msgstr "Például"
+
+#: wb_project_dialogs.py:96
+msgid " Pick Colour... "
+msgstr " SzÃn kijelölése..."
+
+#: wb_project_dialogs.py:185
+msgid "Enter a project name"
+msgstr "Proekt név megadása"
+
+#: wb_project_dialogs.py:189
+#, python-format
+msgid "Project %s already exist. Choose another name"
+msgstr "Projket %s már létezik. Válaszon másik nevet."
+
+#: wb_project_dialogs.py:195
+msgid "Enter a Subversion trunk URL"
+msgstr "Subversion törzs URL megadása"
+
+#: wb_project_dialogs.py:199
+#, python-format
+msgid "%s is not a valid Subversion trunk URL"
+msgstr "%s nem egy érvényes Subversion törzs URL"
+
+#: wb_project_dialogs.py:205
+#: wb_project_dialogs.py:211
+#, python-format
+msgid "%s is not a valid Subversion tags URL"
+msgstr "%s nem egy érvényes Subversion tag URL"
+
+#: wb_project_dialogs.py:216
+msgid "Enter a Working copy path"
+msgstr "Munkapéldány útvonal megadása"
+
+#: wb_project_dialogs.py:228
+#: wb_project_dialogs.py:538
+#: wb_project_dialogs.py:714
+msgid "Select Working Copy directory"
+msgstr "Munkapéldány könyvtár megadása"
+
+#: wb_project_dialogs.py:247
+msgid "Select New File Template directory"
+msgstr "�j fájl sablon könyvtár kiválasztása"
+
+#: wb_project_dialogs.py:347
+msgid "Add Project"
+msgstr "Projekt hozzáadása"
+
+#: wb_project_dialogs.py:444
+msgid "Working Copy"
+msgstr "Munkapéldány"
+
+#: wb_project_dialogs.py:445
+msgid " Use new working copy directory "
+msgstr " �j munkapéldány könyvtár használata"
+
+#: wb_project_dialogs.py:446
+msgid " Use existing Working copy directory "
+msgstr " MeglévÅ? munkapéldány könyvtár használata"
+
+#: wb_project_dialogs.py:470
+msgid "Select Working Copy"
+msgstr "Munkapéldány kiválasztása"
+
+#: wb_project_dialogs.py:487
+#: wb_project_dialogs.py:583
+#: wb_project_dialogs.py:646
+#: wb_project_dialogs.py:751
+msgid "Subversion URL:"
+msgstr "Subversion URL:"
+
+#: wb_project_dialogs.py:512
+#, python-format
+msgid ""
+"Path %s\n"
+"Does not exist\n"
+"Choose an existing subversion working copy directory"
+msgstr ""
+"Ã?tvonal %s\n"
+"Nem létezik\n"
+"Válaszon egy létezÅ? Subversion munkapéldány könyvtárat"
+
+#: wb_project_dialogs.py:519
+#, python-format
+msgid ""
+"Path %s\n"
+"Is not a directory\n"
+"Choose an existing subversion working copy directory"
+msgstr ""
+"Ã?tvonal %s\n"
+"ez nem egy könyvtár\n"
+"Válaszon egy létezÅ? Subversion munkapéldány könyvtárat"
+
+#: wb_project_dialogs.py:526
+#, python-format
+msgid ""
+"Path %s\n"
+"Is not a subversion working copy\n"
+"Choose an existing subversion working copy directory"
+msgstr ""
+"Ã?tvonal %s\n"
+"ez nem egy létezÅ? Subversion munkapéldány\n"
+"Válaszon egy létezÅ? Subversion munkapéldány könyvtárat"
+
+#: wb_project_dialogs.py:577
+msgid "Select Subversion URL"
+msgstr "Subversion URL választása"
+
+#: wb_project_dialogs.py:603
+msgid "Enter a Subversion URL"
+msgstr "Subversion URL megadása"
+
+#: wb_project_dialogs.py:607
+#, python-format
+msgid "%s is not a valid Subversion URL"
+msgstr "%s nem egy érvényes Subversion URL"
+
+#: wb_project_dialogs.py:615
+#, python-format
+msgid ""
+"%(url)s is not a accessable Subversion URL\n"
+"%(error)s"
+msgstr ""
+"%(url)s nem egy hozzáférhetÅ? Subversion URL\n"
+"%(error)s"
+
+#: wb_project_dialogs.py:628
+msgid "Create new Working Copy"
+msgstr "Ã?j munkapéldány készÃtése"
+
+#: wb_project_dialogs.py:664
+msgid "Choose a directory that is empty and not in used by subversion"
+msgstr "Válasszon egy könyvtárat, amely üres és nem használja a Subversion"
+
+#: wb_project_dialogs.py:670
+#, python-format
+msgid ""
+"Path %s\n"
+"Is not a directory\n"
+"Choose a directory that is empty and not in use by subversion"
+msgstr ""
+"Ã?tvonal %s\n"
+"ez nem egy könyvtár\n"
+"Válasszon egy könyvtárat, amely üres és nem használja a Subversion"
+
+#: wb_project_dialogs.py:678
+#, python-format
+msgid ""
+"Path %s\n"
+"Is a subversion working copy\n"
+"Choose a directory that is empty and not in use by subversion"
+msgstr ""
+"Ã?tvonal %s\n"
+"ez egy Subversion munkapéldány\n"
+"Válasszon egy könyvtárat, amely üres és nem használja a Subversion"
+
+#: wb_project_dialogs.py:691
+#, python-format
+msgid ""
+"Path %s\n"
+"Is not an empty directory\n"
+"Choose a directory that is empty and not in use by subversion"
+msgstr ""
+"Ã?tvonal %s\n"
+"ez nem egy üres könyvtár\n"
+"Válasszon egy könyvtárat, amely üres és nem használja a Subversion"
+
+#: wb_project_dialogs.py:700
+#, python-format
+msgid ""
+"Path %(path)s\n"
+"%(error)s\n"
+"Choose a directory that is empty and not in use by subversion"
+msgstr ""
+"Ã?tvonal %(path)s\n"
+"%(error)s\n"
+"Válasszon egy könyvtárat, amely üres és nem használja a Subversion"
+
+#: wb_project_dialogs.py:727
+msgid "Project Name"
+msgstr "Projekt neve"
+
+#: wb_project_dialogs.py:733
+msgid "Project name:"
+msgstr "Projekt neve"
+
+#: wb_project_dialogs.py:768
+msgid ""
+"Project name is blank.\n"
+"Enter a project name"
+msgstr ""
+"Projekt neve nincs kitöltve.\n"
+"Adja meg a nevet"
+
+#: wb_project_dialogs.py:774
+#, python-format
+msgid ""
+"Project %s already exist.\n"
+"Choose another name"
+msgstr ""
+"Projekt neve %s már létezik.\n"
+"Válasszon másik nevet"
+
+#: wb_shell_macosx_commands.py:58
+#: wb_shell_unix_commands.py:51
+#: wb_shell_win32_commands.py:53
+#, python-format
+msgid "Open %s"
+msgstr "Megnyitás %s"
+
+#: wb_shell_win32_commands.py:61
+#, python-format
+msgid ""
+"Unable to shell open %s\n"
+"Is an application associated with this file type?"
+msgstr ""
+"Terminál nem nyitható meg %s\n"
+"Van egy alkalmazás rendelve ehhez a fájl tÃpushoz?"
+
+#: wb_shell_win32_commands.py:64
+#, python-format
+msgid "Unable to shell open %(filename)s - %(error)s"
+msgstr "Terminál nem nyitható meg %(filename)s - %(error)s"
+
+#: wb_shell_win32_commands.py:122
+#, python-format
+msgid ""
+"Create process failed for command - %(command)s\n"
+"Reason %(reason)s"
+msgstr ""
+"Sikertelen parancs - %(command)s\n"
+"Indok %(reason)s"
+
+#: wb_shell_win32_commands.py:131
+#, python-format
+msgid "Created directory %s"
+msgstr "Könyvtár létrehozása %s"
+
+#: wb_shell_win32_commands.py:134
+#, python-format
+msgid "Create directory %(dir)s - %(error)s"
+msgstr "Könyvtár létrehozása %(dir)s - %(error)s"
+
+#: wb_shell_win32_commands.py:140
+#, python-format
+msgid "%s is not a directory"
+msgstr "%s nem egy könyvtár"
+
+#: wb_subversion_annotate.py:23
+#, python-format
+msgid "Annotation of %s"
+msgstr "Jegyzet %s"
+
+#: wb_subversion_annotate.py:57
+msgid "Line"
+msgstr "Sor"
+
+#: wb_subversion_annotate.py:58
+#: wb_subversion_history.py:502
+msgid "Revision"
+msgstr "RevÃzió"
+
+#: wb_subversion_annotate.py:60
+#: wb_subversion_history.py:504
+#: wb_subversion_list_handler_common.py:33
+#: wb_subversion_list_handler_common.py:112
+msgid "Date"
+msgstr "Dátum"
+
+#: wb_subversion_annotate.py:61
+msgid "Text"
+msgstr "Szöveg"
+
+#: wb_subversion_checkin.py:33
+#, python-format
+msgid "Check in for %s"
+msgstr "EllenÅ?rzés itt: %s"
+
+#: wb_subversion_checkin.py:54
+msgid "Select All"
+msgstr "�sszes kiválasztása"
+
+#: wb_subversion_checkin.py:54
+msgid "Select ALl"
+msgstr "�sszes kiválasztása"
+
+#: wb_subversion_checkin.py:56
+#: wb_subversion_report_updates.py:47
+msgid "Exclude..."
+msgstr "Kihagy..."
+
+#: wb_subversion_checkin.py:56
+#: wb_subversion_checkin.py:97
+#: wb_subversion_report_updates.py:70
+msgid "Exclude from check in"
+msgstr "Kizárva az ellenÅ?rzésbÅ?l"
+
+#: wb_subversion_checkin.py:57
+#: wb_subversion_report_updates.py:48
+msgid "Include..."
+msgstr "Tartalmaz..."
+
+#: wb_subversion_checkin.py:57
+msgid "Include from check in"
+msgstr "Beleértve az ellenÅ?rzésbe"
+
+#: wb_subversion_checkin.py:72
+#: wb_toolbars.py:98
+msgid "Edit File"
+msgstr "Fájl szerkesztése"
+
+#: wb_subversion_checkin.py:76
+#: wb_toolbars.py:101
+msgid "Open File"
+msgstr "Fájl megnyitása"
+
+#: wb_subversion_checkin.py:80
+#: wb_toolbars.py:104
+msgid "Diff changes against base"
+msgstr "Változások összehasonlÃtása a bázisban"
+
+#: wb_subversion_checkin.py:83
+#: wb_subversion_report_branch_changes.py:55
+#: wb_subversion_report_lock.py:63
+#: wb_subversion_report_revision_changes.py:70
+#: wb_subversion_report_updates.py:66
+#: wb_toolbars.py:107
+msgid "Show History log"
+msgstr "ElÅ?zmények mutatása"
+
+#: wb_subversion_checkin.py:86
+#: wb_subversion_report_branch_changes.py:58
+#: wb_subversion_report_lock.py:66
+#: wb_subversion_report_revision_changes.py:73
+#: wb_toolbars.py:110
+msgid "File Information"
+msgstr "Fájl információ"
+
+#: wb_subversion_checkin.py:89
+#: wb_toolbars.py:113
+msgid "File Properties"
+msgstr "Fájl tulajdonságok"
+
+#: wb_subversion_checkin.py:93
+#: wb_toolbars.py:122
+msgid "Revert selected Files and Folders"
+msgstr "Fájlok és könyvtárak kiválasztásának visszavonása"
+
+#: wb_subversion_checkin.py:100
+#: wb_subversion_report_updates.py:73
+msgid "Include in check in"
+msgstr "Beleértve az ellenÅ?rzésbe"
+
+#: wb_subversion_checkin.py:136
+msgid " Check In "
+msgstr "r"
+
+#: wb_subversion_checkin.py:242
+#, python-format
+msgid "Check in %s..."
+msgstr "EllenÅ?rzés %s..."
+
+#: wb_subversion_checkin.py:243
+#, python-format
+msgid "Sent %(count)d of %(total)d"
+msgstr "Küldés %(count)d, ennyibÅ?l %(total)d"
+
+#: wb_subversion_checkin.py:265
+#, python-format
+msgid "Checkin created revision %d"
+msgstr "EllenÅ?rzés készÃtett revÃzió %d"
+
+#: wb_subversion_checkin.py:267
+msgid "No changes to checkin "
+msgstr "Nincsenek cserék az elleÅ?rzéshez"
+
+#: wb_subversion_checkin.py:272
+msgid "Post commit error"
+msgstr "Beküldés utáni hiba"
+
+#: wb_subversion_checkin.py:313
+#: wb_subversion_list_handler.py:223
+#: wb_subversion_tree_handler.py:354
+msgid "There are no changes to check in"
+msgstr "Nincsenek cserék az ellenÅ?rzéshez"
+
+#: wb_subversion_history.py:73
+#: wb_subversion_history.py:377
+#: wb_subversion_history.py:467
+#: wb_subversion_history.py:534
+msgid "Comment"
+msgstr "Megjegyzés"
+
+#: wb_subversion_history.py:75
+#: wb_subversion_history.py:377
+#: wb_subversion_history.py:522
+msgid "Path"
+msgstr "Ã?tvonal"
+
+#: wb_subversion_history.py:200
+msgid "Show only:"
+msgstr "Csak ezt mutassa:"
+
+#: wb_subversion_history.py:211
+msgid "Show since:"
+msgstr "Mutat onnantól:"
+
+#: wb_subversion_history.py:221
+msgid "Include tags: "
+msgstr "Tagek:"
+
+#: wb_subversion_history.py:312
+#: wb_subversion_history.py:331
+#, python-format
+msgid "History of %s"
+msgstr "ElÅ?zmények %s"
+
+#: wb_subversion_history.py:505
+msgid "Label"
+msgstr "CÃmke"
+
+#: wb_subversion_history.py:506
+msgid "Message"
+msgstr "Ã?zenet"
+
+#: wb_subversion_history.py:521
+msgid "Action"
+msgstr "Művelet"
+
+#: wb_subversion_history.py:523
+msgid "Copied Revision"
+msgstr "Másolva"
+
+#: wb_subversion_history.py:524
+msgid "Copied from"
+msgstr "Másolva"
+
+#: wb_subversion_history.py:536
+msgid "Changed Paths"
+msgstr "MódosÃtott útvonalak"
+
+#: wb_subversion_history.py:623
+msgid "Diff"
+msgstr "Ã?sszehasonlÃtás"
+
+#: wb_subversion_history.py:625
+msgid "Annotate"
+msgstr "Jegyzet"
+
+#: wb_subversion_history.py:627
+msgid "Revision Changes"
+msgstr "Változások reviziója"
+
+#: wb_subversion_history.py:724
+msgid "Log history View not implemented"
+msgstr "Napló elÅ?zmény nézete nem megvalósÃtható"
+
+#: wb_subversion_history.py:906
+#, python-format
+msgid "Revision changes for r%(rev1)d ignored. Its URL \"%(url1)s\" does not match r%(rev2)d URL \"%(url2)s\"."
+msgstr "RevÃzió cseréje r%(rev1)d mellÅ?zve. Ez az URL \"%(url1)s\" nem párja a r%(rev2)d URL-nek \"%(url2)s\"."
+
+#: wb_subversion_info_dialog.py:25
+msgid "Entry"
+msgstr "Bejegyzés"
+
+#: wb_subversion_info_dialog.py:26
+msgid "Path:"
+msgstr "Ã?tvonal"
+
+#: wb_subversion_info_dialog.py:58
+#: wb_subversion_info_dialog.py:102
+msgid "URL:"
+msgstr "URL:"
+
+#: wb_subversion_info_dialog.py:60
+msgid "Repository:"
+msgstr "Tároló:"
+
+#: wb_subversion_info_dialog.py:62
+#: wb_subversion_info_dialog.py:106
+msgid "Repository UUID:"
+msgstr "Tároló UUID:"
+
+#: wb_subversion_info_dialog.py:66
+#: wb_subversion_info_dialog.py:68
+#: wb_subversion_info_dialog.py:70
+#: wb_subversion_info_dialog.py:72
+#: wb_subversion_info_dialog.py:110
+#: wb_subversion_info_dialog.py:112
+#: wb_subversion_info_dialog.py:114
+#: wb_subversion_info_dialog.py:116
+msgid "Node kind:"
+msgstr "Node fajta:"
+
+#: wb_subversion_info_dialog.py:66
+#: wb_subversion_info_dialog.py:110
+msgid "file"
+msgstr "fájl"
+
+#: wb_subversion_info_dialog.py:68
+#: wb_subversion_info_dialog.py:112
+msgid "directory"
+msgstr "könyvtár"
+
+#: wb_subversion_info_dialog.py:70
+#: wb_subversion_info_dialog.py:114
+msgid "none"
+msgstr "egyik sem"
+
+#: wb_subversion_info_dialog.py:72
+#: wb_subversion_info_dialog.py:116
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: wb_subversion_info_dialog.py:75
+#: wb_subversion_info_dialog.py:77
+#: wb_subversion_info_dialog.py:79
+#: wb_subversion_info_dialog.py:81
+#: wb_subversion_info_dialog.py:143
+#: wb_subversion_info_dialog.py:145
+#: wb_subversion_info_dialog.py:147
+#: wb_subversion_info_dialog.py:149
+#: wb_subversion_info_dialog.py:151
+msgid "Schedule:"
+msgstr "Jegyzék:"
+
+#: wb_subversion_info_dialog.py:75
+#: wb_subversion_info_dialog.py:143
+msgid "normal"
+msgstr "normál"
+
+#: wb_subversion_info_dialog.py:77
+#: wb_subversion_info_dialog.py:145
+msgid "add"
+msgstr "hozzáadás"
+
+#: wb_subversion_info_dialog.py:79
+#: wb_subversion_info_dialog.py:147
+msgid "delete"
+msgstr "törlés"
+
+#: wb_subversion_info_dialog.py:81
+#: wb_subversion_info_dialog.py:149
+msgid "replace"
+msgstr "csere"
+
+#: wb_subversion_info_dialog.py:84
+#: wb_subversion_info_dialog.py:153
+msgid "Copied From URL:"
+msgstr "Másolva errÅ?l az URL-rÅ?l:"
+
+#: wb_subversion_info_dialog.py:86
+#: wb_subversion_info_dialog.py:155
+msgid "Copied From Revision:"
+msgstr "Másolva ebbÅ?l a revÃzióból:"
+
+#: wb_subversion_info_dialog.py:88
+#: wb_subversion_info_dialog.py:119
+msgid "Last Changed Author:"
+msgstr "SzerzÅ? utolsó változása:"
+
+#: wb_subversion_info_dialog.py:90
+#: wb_subversion_info_dialog.py:121
+msgid "Last Changed Revision:"
+msgstr "RevÃzió utolsó változása:"
+
+#: wb_subversion_info_dialog.py:92
+#: wb_subversion_info_dialog.py:123
+msgid "Last Changed Date:"
+msgstr "Dátum utolsó változása:"
+
+#: wb_subversion_info_dialog.py:94
+#: wb_subversion_info_dialog.py:157
+msgid "Text Last Updated:"
+msgstr "Szöveg utolsó változása:"
+
+#: wb_subversion_info_dialog.py:96
+#: wb_subversion_info_dialog.py:159
+msgid "Properties Last Updated:"
+msgstr "Tulajonságok utolsó változása:"
+
+#: wb_subversion_info_dialog.py:98
+#: wb_subversion_info_dialog.py:161
+msgid "Checksum:"
+msgstr "EllenörzÅ? összeg:"
+
+#: wb_subversion_info_dialog.py:104
+msgid "Repository root URL:"
+msgstr "Tároló gyökér URL:"
+
+#: wb_subversion_info_dialog.py:125
+#: wb_subversion_list_handler_common.py:927
+msgid "Lock"
+msgstr "Zárás"
+
+#: wb_subversion_info_dialog.py:128
+msgid "Lock Owner:"
+msgstr "Zárás tulajdonosa:"
+
+#: wb_subversion_info_dialog.py:129
+msgid "Lock Creation Date:"
+msgstr "Zárás készÃtés dátuma:"
+
+#: wb_subversion_info_dialog.py:131
+msgid "Lock Expiration Date:"
+msgstr "Zárás lejáratának dátuma:"
+
+#: wb_subversion_info_dialog.py:132
+#: wb_subversion_info_dialog.py:135
+msgid "Lock Token:"
+msgstr "Zárás jelölés:"
+
+#: wb_subversion_info_dialog.py:133
+msgid "Lock Comment:"
+msgstr "Zárás megjegyzés:"
+
+#: wb_subversion_info_dialog.py:141
+msgid "Working copy"
+msgstr "Munkapéldány"
+
+#: wb_subversion_list_handler_common.py:32
+#: wb_subversion_list_handler_common.py:111
+#: wb_subversion_report_branch_changes.py:147
+#: wb_subversion_report_lock.py:183
+#: wb_subversion_report_revision_changes.py:266
+#: wb_subversion_report_updates.py:205
+msgid "State"
+msgstr "Ã?llapot"
+
+#: wb_subversion_list_handler_common.py:34
+#: wb_subversion_list_handler_common.py:113
+msgid "Rev"
+msgstr "Rev"
+
+#: wb_subversion_list_handler_common.py:37
+#: wb_subversion_list_handler_common.py:117
+msgid "Mimetype"
+msgstr "MimetÃpus"
+
+#: wb_subversion_list_handler_common.py:38
+#: wb_subversion_list_handler_common.py:118
+msgid "EOL"
+msgstr "EOL"
+
+#: wb_subversion_list_handler_common.py:39
+#: wb_subversion_list_handler_common.py:115
+msgid "Type"
+msgstr "TÃpus"
+
+#: wb_subversion_list_handler_common.py:40
+#: wb_subversion_list_handler_common.py:119
+#: wb_subversion_report_lock.py:183
+msgid "Lock Owner"
+msgstr "Zárás tuljadonosa:"
+
+#: wb_subversion_list_handler_common.py:41
+#: wb_subversion_list_handler_common.py:120
+#: wb_subversion_report_lock.py:183
+msgid "Lock Comment"
+msgstr "Zárás megjegyzés"
+
+#: wb_subversion_list_handler_common.py:116
+msgid "Size"
+msgstr "Méret"
+
+#: wb_subversion_list_handler_common.py:348
+msgid "Use the Checkout command to fetch files"
+msgstr "Használja az EllenÅ?rzés parancsot a fájlok elhozásához"
+
+#: wb_subversion_list_handler_common.py:350
+msgid "Use the Update command to fetch files"
+msgstr "Használja az FrissÃt parancsot a fájlok behozásához"
+
+#: wb_subversion_list_handler_common.py:682
+#: wb_subversion_report_revision_changes.py:121
+#, python-format
+msgid "Annotating %(count)d"
+msgstr "Jegyzetelés %(count)d"
+
+#: wb_subversion_list_handler_common.py:684
+#: wb_subversion_report_revision_changes.py:123
+#, python-format
+msgid "Annotate %s..."
+msgstr "Jegyzet %s..."
+
+#: wb_subversion_list_handler_common.py:708
+#: wb_subversion_tree_handler.py:385
+#, python-format
+msgid "Diff BASE %s..."
+msgstr "Ã?sszehasonlÃtás BASE %s..."
+
+#: wb_subversion_list_handler_common.py:743
+#: wb_subversion_tree_handler.py:421
+#, python-format
+msgid "Diff HEAD %s..."
+msgstr "Ã?sszehasonlÃtás HEAD %s..."
+
+#: wb_subversion_list_handler_common.py:776
+#: wb_subversion_list_handler_common.py:824
+msgid "Retrieving branch info..."
+msgstr "Branch információ visszakeresése..."
+
+#: wb_subversion_list_handler_common.py:783
+#: wb_subversion_list_handler_common.py:830
+#: wb_subversion_tree_handler.py:772
+#, python-format
+msgid "\"%s\" is not a branch."
+msgstr "\"%s\" nem egy branch"
+
+#: wb_subversion_list_handler_common.py:783
+#: wb_subversion_list_handler_common.py:830
+#: wb_subversion_tree_handler.py:772
+#: wb_subversion_tree_handler.py:774
+msgid "Error"
+msgstr "Hiba"
+
+#: wb_subversion_list_handler_common.py:791
+#, python-format
+msgid "Diff branch origin BASE %s..."
+msgstr "Ã?sszehasonlÃtás branch eredeti BASE %s..."
+
+#: wb_subversion_list_handler_common.py:838
+#, python-format
+msgid "Diff branch origin HEAD %s..."
+msgstr "Ã?sszehasonlÃtás branch eredeti HEAD %s..."
+
+#: wb_subversion_list_handler_common.py:877
+#: wb_subversion_tree_handler.py:462
+#, python-format
+msgid "Log history %s..."
+msgstr "ElÅ?zmények napló %s..."
+
+#: wb_subversion_list_handler_common.py:932
+#, python-format
+msgid "Locking %(count)d"
+msgstr "Zárva %(count)d"
+
+#: wb_subversion_list_handler_common.py:934
+#, python-format
+msgid "Locking %s..."
+msgstr "Zárva %s..."
+
+#: wb_subversion_list_handler_common.py:990
+msgid "Unlock"
+msgstr "Nyitva"
+
+#: wb_subversion_list_handler_common.py:995
+#, python-format
+msgid "Unlocking %(count)d"
+msgstr "Nyitás %(count)d"
+
+#: wb_subversion_list_handler_common.py:997
+#, python-format
+msgid "Unlocking %s..."
+msgstr "Nyitás %s..."
+
+#: wb_subversion_list_handler.py:69
+#: wb_subversion_tree_handler.py:189
+msgid "Update to.."
+msgstr "FrissÃtés..."
+
+#: wb_subversion_list_handler.py:102
+#, python-format
+msgid "Copied %d files to the Clipboard"
+msgstr "%d fájl másolva a vágólapra"
+
+#: wb_subversion_list_handler.py:107
+#, python-format
+msgid "Cut %d files to the Clipboard"
+msgstr "%d fájlok a vágólapra vágva"
+
+#: wb_subversion_list_handler.py:130
+msgid "Paste Copy"
+msgstr "Másolás ide"
+
+#: wb_subversion_list_handler.py:132
+msgid "Paste Move"
+msgstr "Mozgatás ide"
+
+#: wb_subversion_list_handler.py:148
+msgid "Save As"
+msgstr "Mentés másként"
+
+#: wb_subversion_list_handler.py:158
+#, python-format
+msgid "%(title)s: From %(filename)s"
+msgstr "%(title)s: korábban %(filename)s"
+
+#: wb_subversion_list_handler.py:161
+#, python-format
+msgid "%(title)s: To %(filename)s"
+msgstr "%(title)s: lesz %(filename)s"
+
+#: wb_subversion_list_handler.py:242
+msgid "Delete File"
+msgstr "Fájl törlése"
+
+#: wb_subversion_list_handler.py:323
+#: wb_subversion_list_handler.py:353
+#: wb_subversion_list_handler.py:361
+#, python-format
+msgid "Rename %(from)s %(to)s"
+msgstr "�tnevezés %(from)s %(to)s"
+
+#: wb_subversion_list_handler.py:347
+msgid "Failed to create tmp file for rename"
+msgstr "Fájl átnevezésénél hiba a tmp fájlban"
+
+#: wb_subversion_list_handler.py:410
+msgid "Resolved"
+msgstr "Megoldott"
+
+#: wb_subversion_list_handler.py:424
+#: wb_subversion_list_handler.py:477
+#: wb_subversion_report_updates.py:132
+#: wb_subversion_tree_handler.py:828
+#: wb_subversion_tree_handler.py:844
+#, python-format
+msgid "Updated %(count)d"
+msgstr "FrissÃtve %(count)d"
+
+#: wb_subversion_list_handler.py:429
+#: wb_subversion_list_handler.py:482
+#: wb_subversion_report_updates.py:131
+#: wb_subversion_tree_handler.py:827
+#: wb_subversion_tree_handler.py:843
+#, python-format
+msgid "Update %s..."
+msgstr "FrissÃtve %s..."
+
+#: wb_subversion_list_handler.py:451
+#: wb_subversion_list_handler.py:504
+#: wb_subversion_report_updates.py:143
+#: wb_subversion_tree_handler.py:876
+#, python-format
+msgid "Updated %(filename)s to revision %(rev)d, no new updates"
+msgstr "FrissÃtve %(filename)s a revÃzióra %(rev)d, nincs újabb változat"
+
+#: wb_subversion_list_handler.py:455
+#: wb_subversion_list_handler.py:508
+#: wb_subversion_report_updates.py:147
+#: wb_subversion_tree_handler.py:880
+#, python-format
+msgid "Updated %(filename)s to revision %(rev)d, %(count)d new update"
+msgid_plural "Updated %(filename)s to revision %(rev)d, %(count)d new updates"
+msgstr[0] "FrissÃtve %(filename)s a revÃzióra %(rev)d, %(count)d új változat"
+msgstr[1] "FrissÃtve %(filename)s a revÃzióra %(rev)d, %(count)d új változatok"
+
+#: wb_subversion_list_handler.py:462
+#: wb_subversion_list_handler.py:515
+#: wb_subversion_tree_handler.py:889
+#, python-format
+msgid "%d file is in conflict"
+msgid_plural "%d files are in conflict"
+msgstr[0] "%d fájlnál konfliktus"
+msgstr[1] "%d fájloknál konfliktus"
+
+#: wb_subversion_list_handler.py:471
+#: wb_subversion_tree_handler.py:837
+msgid "Update to revision"
+msgstr "RevÃzió frissÃtése"
+
+#: wb_subversion_project_info.py:244
+msgid "Hostname"
+msgstr "Hostnév"
+
+#: wb_subversion_project_info.py:245
+msgid "Valid From"
+msgstr "�rvényesség kezdete:"
+
+#: wb_subversion_project_info.py:246
+msgid "Valid Until"
+msgstr "�rvényesség vége:"
+
+#: wb_subversion_project_info.py:247
+msgid "Issuer Name"
+msgstr "Egy érték beÃrása %s"
+
+#: wb_subversion_project_info.py:248
+msgid "Finger Print"
+msgstr "Ujjlenyomat"
+
+#: wb_subversion_properties_dialog.py:92
+#: wb_subversion_properties_dialog.py:113
+#, python-format
+msgid "Enter a value for %s"
+msgstr "Egy érték beÃrása %s"
+
+#: wb_subversion_report_branch_changes.py:25
+msgid "Branch changes report"
+msgstr "Branch változások jelentés"
+
+#: wb_subversion_report_branch_changes.py:52
+#: wb_subversion_report_lock.py:60
+#: wb_subversion_report_updates.py:63
+msgid "Diff changes against HEAD"
+msgstr "Változások összehasonlÃtása a HEAD-ben"
+
+#: wb_subversion_report_lock.py:30
+msgid "Repository Lock Report"
+msgstr "Tároló zárási beszámoló"
+
+#: wb_subversion_report_lock.py:32
+msgid "Working Copy Lock Report"
+msgstr "Munkapéldány zárás beszámoló"
+
+#: wb_subversion_report_lock.py:70
+#: wb_toolbars.py:125
+msgid "Lock File"
+msgstr "Fájl zárása"
+
+#: wb_subversion_report_lock.py:73
+#: wb_toolbars.py:128
+msgid "Unlock File"
+msgstr "Fájl nyitása"
+
+#: wb_subversion_report_revision_changes.py:36
+#, python-format
+msgid "Revision changes - r%(rev1)d vs. r%(rev2)d"
+msgstr "Revizió cseréje - r%(rev1)d és r%(rev2)d között"
+
+#: wb_subversion_report_revision_changes.py:44
+#, python-format
+msgid "Diff r%(rev1)d vs. r%(rev1)d..."
+msgstr "Ã?sszehasonlÃtás r%(rev1)d és r%(rev1)d között..."
+
+#: wb_subversion_report_revision_changes.py:159
+#, python-format
+msgid "Diff -r%(rev1)d:%(rev2)d %(url)s..."
+msgstr "Ã?sszehasonlÃtás -r%(rev1)d:%(rev2)d %(url)s..."
+
+#: wb_subversion_report_updates.py:33
+msgid "Updates Report"
+msgstr "FrissÃtési jelentés"
+
+#: wb_subversion_report_updates.py:47
+msgid "Exclude from update"
+msgstr "Kimaradt a frissÃtésbÅ?l"
+
+#: wb_subversion_report_updates.py:48
+msgid "Include in update"
+msgstr "Tartalmazza a frissÃtés"
+
+#: wb_subversion_report_updates.py:286
+msgid " Update "
+msgstr " FrissÃtés"
+
+#: wb_subversion_tree_handler.py:208
+#, python-format
+msgid "Creating branch %s"
+msgstr "Branch készÃtése %s"
+
+#: wb_subversion_tree_handler.py:212
+#, python-format
+msgid "Creating tag %s"
+msgstr "Tag készÃtése %s"
+
+#: wb_subversion_tree_handler.py:249
+#, python-format
+msgid "Copied folder %s to the Clipboard"
+msgstr "Dosszié %s másolása a vágólapra"
+
+#: wb_subversion_tree_handler.py:254
+#, python-format
+msgid "Cut folder %s to the Clipboard"
+msgstr "Dosszié %s kivágása a vágólapra"
+
+#: wb_subversion_tree_handler.py:262
+msgid "Add Folder"
+msgstr "Dosszié hozzáadása"
+
+#: wb_subversion_tree_handler.py:275
+#: wb_subversion_tree_handler.py:289
+#, python-format
+msgid "Checkout %s..."
+msgstr "EllenÅ?rzés %s..."
+
+#: wb_subversion_tree_handler.py:286
+msgid "Checkout to revision"
+msgstr "RevÃzió ellenÅ?rzése"
+
+#: wb_subversion_tree_handler.py:315
+#, python-format
+msgid "Clean up %s..."
+msgstr "TisztÃtás %s..."
+
+#: wb_subversion_tree_handler.py:331
+#, python-format
+msgid "Look for changes to check in %s..."
+msgstr "Cserék ellenÅ?rzése itt: %s"
+
+#: wb_subversion_tree_handler.py:374
+msgid "Delete Folder"
+msgstr "Dosszié törlése"
+
+#: wb_subversion_tree_handler.py:513
+msgid "Make directory"
+msgstr "Könyvtár készÃtése"
+
+#: wb_subversion_tree_handler.py:547
+#, python-format
+msgid "Cannot read template %(filename)s - %(error)s"
+msgstr "Nem olvasható a sablon %(filename)s - %(error)s"
+
+#: wb_subversion_tree_handler.py:559
+#, python-format
+msgid "Cannot create new file %(filename)s - %(error)s"
+msgstr "Nem készÃthetÅ? új fájl %(filename)s - %(error)s"
+
+#: wb_subversion_tree_handler.py:610
+#, python-format
+msgid "Looking for repository locks in %s..."
+msgstr "Tároló zárások nézése itt %s..."
+
+#: wb_subversion_tree_handler.py:612
+#, python-format
+msgid "Looking for working copy locks in %s..."
+msgstr "Munkapéldány zárások nézése itt %s..."
+
+#: wb_subversion_tree_handler.py:636
+msgid "There are no locked files in the repository"
+msgstr "Nincs zárt fájl a tárolóban"
+
+#: wb_subversion_tree_handler.py:639
+msgid "There are no locked files in the working copy"
+msgstr "Nincs zárt fájl a munkapéldányban"
+
+#: wb_subversion_tree_handler.py:649
+#, python-format
+msgid "Updates %s..."
+msgstr "FrissÃtés %s..."
+
+#: wb_subversion_tree_handler.py:668
+msgid "All files are up todate"
+msgstr "Minden fájl naprakész"
+
+#: wb_subversion_tree_handler.py:684
+#, python-format
+msgid "Branch changes %s..."
+msgstr "Branch cserék %s..."
+
+#: wb_subversion_tree_handler.py:774
+#, python-format
+msgid "No files changed yet in branch \"%s\"."
+msgstr "Még nincs cserélt fájl a branchban \"%s\"."
+
+#: wb_subversion_tree_handler.py:786
+msgid "Rename Directory"
+msgstr "Könyvtár átnevezése"
+
+#: wb_subversion_tree_handler.py:814
+msgid "There are no changes to revert"
+msgstr "Nem történtek cserék"
+
+#: wb_subversion_tree_handler.py:886
+msgid "Already up to date"
+msgstr "Már naprakész"
+
+#: wb_subversion_tree_handler.py:901
+#, python-format
+msgid "Copied %(from)s to %(to)s"
+msgstr "Másolva %(from)s innen ide %(to)s"
+
+#: wb_subversion_tree_handler.py:913
+#, python-format
+msgid "Moved %(from)s to %(to)s"
+msgstr "Mozgatva innen %(from)s ide %(to)s"
+
+#: wb_toolbars.py:82
+msgid "Cut Files and Folders"
+msgstr "Fájl és dosszié kivágása"
+
+#: wb_toolbars.py:85
+msgid "Copy Files and Folders"
+msgstr "Fájl és dosszié másolása"
+
+#: wb_toolbars.py:88
+msgid "Paste Files and Folders"
+msgstr "Fájl és dosszié beillesztése"
+
+#: wb_toolbars.py:92
+msgid "Start new command shell"
+msgstr "Ã?j terminál indÃtása"
+
+#: wb_toolbars.py:116
+msgid "Add Files and Folders"
+msgstr "Fájl és dosszié hozzáadása"
+
+#: wb_toolbars.py:119
+msgid "Delete selected Files and Folders"
+msgstr "Kiválasztott fájlok és dossziék törlése"
+
+#: wb_toolbars.py:131
+msgid "Checkin changes"
+msgstr "Cserék ellenÅ?rzése"
+
+#: wb_toolbars.py:134
+msgid "Update working copy"
+msgstr "Munkapéldány frissÃtése"
+
+#: wb_toolbars.py:137
+msgid "Use recursive (flat) view"
+msgstr "RekurzÃv nézet használata"
+
+#: wb_toolbars.py:141
+msgid "Show only changed files"
+msgstr "Csak a változott fájlok mutatása"
+
+#: wb_tree_panel.py:244
+msgid "Projects:"
+msgstr "Projekt:"
+
+#: wb_tree_panel.py:406
+#: wb_tree_panel.py:471
+msgid "Refreshing view..."
+msgstr "Nézet frissÃtése..."
+
+#: wb_tree_panel.py:997
+msgid "&Add Project"
+msgstr "Projekt hozzáadása"
+
+
diff -Nru svn-workbench-1.6.2/Source/make_mo_files.py svn-workbench-1.6.6/Source/make_mo_files.py
--- svn-workbench-1.6.2/Source/make_mo_files.py 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/make_mo_files.py 2010-08-01 21:39:35.000000000 +0900
@@ -4,7 +4,7 @@
localedir = sys.argv[1]
-all_lang = ['en', 'de']
+all_lang = ['en', 'de', 'hu']
for lang in all_lang:
mo_output_dir = '%s/%s/LC_MESSAGES' % (localedir, lang)
diff -Nru svn-workbench-1.6.2/Source/make_pot_file.py svn-workbench-1.6.6/Source/make_pot_file.py
--- svn-workbench-1.6.2/Source/make_pot_file.py 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/make_pot_file.py 2011-11-06 23:19:48.000000000 +0900
@@ -12,7 +12,7 @@
f.write( '%s\n' % py_file )
f.close()
-rc = os.system( 'xgettext '
+cmd = ('xgettext '
'--files-from=wb_files.tmp '
'--default-domain=pysvn_workbench '
'--output=I18N/pysvn_workbench.current.pot '
@@ -25,5 +25,8 @@
'--no-wrap '
'--width=2047 '
'--add-comments=Translat '
- '--language=Python' )
+ '--language=Python')
+
+print 'Info: %s' % (cmd,)
+rc = os.system( cmd )
sys.exit( rc )
diff -Nru svn-workbench-1.6.2/Source/run_wb.cmd svn-workbench-1.6.6/Source/run_wb.cmd
--- svn-workbench-1.6.2/Source/run_wb.cmd 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/run_wb.cmd 2012-03-04 05:14:15.000000000 +0900
@@ -1,4 +1,4 @@
setlocal
-set PYTHONPATH=C:\BuildRoot\Win32-MSVC90-1.6.5\py26_pysvn\Source
-python C:\wc\pysvn\trunk\pysvn\WorkBench\Source\wb_main.py %*
+set PYTHONPATH=C:\BuildRoot\Win32-MSVC90-1.7.3\py27_pysvn\Source
+python C:\wc\svn\pysvn\WorkBench\Source\wb_main.py %*
endlocal
diff -Nru svn-workbench-1.6.2/Source/wb-diff.sh svn-workbench-1.6.6/Source/wb-diff.sh
--- svn-workbench-1.6.2/Source/wb-diff.sh 1970-01-01 09:00:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb-diff.sh 2011-11-05 22:50:19.000000000 +0900
@@ -0,0 +1,29 @@
+#!/bin/sh
+export PYSVN_WORKBENCH_STDOUT_LOG=$(tty)
+
+SOURCEDIR=$( dirname $0 )
+
+if [ "$PYTHONPATH" = "" ]
+then
+ export PYTHONPATH=${SOURCEDIR}
+else
+ export PYTHONPATH=${SOURCEDIR}:$PYTHONPATH
+fi
+
+PYTHON=${PYTHON:-python}
+BASENAME=$( basename ${PYTHON} )
+SUFFIX=${X#python*}
+DIRNAME=$( dirname ${PYTHON} )
+
+if [ "${DIRNAME}" != "" ]
+then
+ DIRNAME=${DIRNAME}/
+fi
+PYTHONW=${DIRNAME}pythonw${SUFFIX}
+
+if [ -e ${PYTHONW} ]
+then
+ ${PYTHONW} ${SOURCEDIR}/wb_diff_main.py $*
+else
+ ${PYTHON} ${SOURCEDIR}/wb_diff_main.py $*
+fi
diff -Nru svn-workbench-1.6.2/Source/wb.rc.template svn-workbench-1.6.6/Source/wb.rc.template
--- svn-workbench-1.6.2/Source/wb.rc.template 2009-09-26 05:34:18.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb.rc.template 2010-03-21 04:08:11.000000000 +0900
@@ -50,7 +50,7 @@
VALUE "FileDescription", "Work Bench\0"
VALUE "FileVersion", "%(MAJOR)s, %(MINOR)s, %(PATCH)s, %(BUILD)s\0"
VALUE "InternalName", "WorkBench\0"
- VALUE "LegalCopyright", "Copyright © 2003-2007 Barry A. Scott\0"
+ VALUE "LegalCopyright", "Copyright © 2003-2010 Barry A. Scott\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "Workbench.exe\0"
VALUE "PrivateBuild", "\0"
diff -Nru svn-workbench-1.6.2/Source/wb.sh svn-workbench-1.6.6/Source/wb.sh
--- svn-workbench-1.6.2/Source/wb.sh 2006-10-25 06:51:49.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb.sh 2011-11-27 23:20:58.000000000 +0900
@@ -9,7 +9,7 @@
PYTHON=${PYTHON:-python}
BASENAME=$( basename ${PYTHON} )
-SUFFIX=${X#python*}
+SUFFIX=${BASENAME#python*}
DIRNAME=$( dirname ${PYTHON} )
if [ "${DIRNAME}" != "" ]
@@ -18,9 +18,14 @@
fi
PYTHONW=${DIRNAME}pythonw${SUFFIX}
+if [ -e /System/Library/CoreServices/SystemVersion.plist ]
+then
+ ARCH_CMD="arch -i386"
+fi
+
if [ -e ${PYTHONW} ]
then
- ${PYTHONW} wb_main.py $*
+ ${ARCH_CMD} ${PYTHONW} wb_main.py $*
else
- ${PYTHON} wb_main.py $*
+ ${ARCH_CMD} ${PYTHON} wb_main.py $*
fi
diff -Nru svn-workbench-1.6.2/Source/wb_app.py svn-workbench-1.6.6/Source/wb_app.py
--- svn-workbench-1.6.2/Source/wb_app.py 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_app.py 2012-07-25 06:31:59.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -663,6 +663,8 @@
def emit( self, record ):
try:
msg = self.format(record) + '\n'
+ if type( msg ) == types.UnicodeType:
+ msg = msg.encode( 'utf-8' )
sys.__stdout__.write( msg )
diff -Nru svn-workbench-1.6.2/Source/wb_background_thread.py svn-workbench-1.6.6/Source/wb_background_thread.py
--- svn-workbench-1.6.2/Source/wb_background_thread.py 2006-09-03 03:06:43.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_background_thread.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_bookmarks_dialogs.py svn-workbench-1.6.6/Source/wb_bookmarks_dialogs.py
--- svn-workbench-1.6.2/Source/wb_bookmarks_dialogs.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_bookmarks_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2005-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2005-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_clipboard.py svn-workbench-1.6.6/Source/wb_clipboard.py
--- svn-workbench-1.6.2/Source/wb_clipboard.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_clipboard.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_config.py svn-workbench-1.6.6/Source/wb_config.py
--- svn-workbench-1.6.2/Source/wb_config.py 2007-01-29 02:06:09.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_config.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_dialogs.py svn-workbench-1.6.6/Source/wb_dialogs.py
--- svn-workbench-1.6.2/Source/wb_dialogs.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -14,6 +14,7 @@
import os
import pysvn
import wb_subversion_utils
+import wb_platform_specific
id_log_message_text = wx.NewId()
id_last_log_message = wx.NewId()
@@ -123,7 +124,7 @@
self.last_log_message_text = None
if self.message_filename is not None:
try:
- self.last_log_message_text = file( self.message_filename, 'r' ).read().decode('utf-8').strip()
+ self.last_log_message_text = wb_platform_specific.uOpen( self.message_filename, 'r' ).read().decode('utf-8').strip()
except EnvironmentError:
self.last_log_message_text = ''
@@ -150,7 +151,7 @@
def OnOk( self, event ):
self.EndModal( wx.ID_OK )
try:
- file( self.message_filename, 'w' ).write( self.getLogMessage().encode('utf-8') )
+ wb_platform_specific.uOpen( self.message_filename, 'w' ).write( self.getLogMessage().encode('utf-8') )
except (IOError,OSError):
pass
diff -Nru svn-workbench-1.6.2/Source/wb_diff_difflib.py svn-workbench-1.6.6/Source/wb_diff_difflib.py
--- svn-workbench-1.6.2/Source/wb_diff_difflib.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_difflib.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_diff_frame.py svn-workbench-1.6.6/Source/wb_diff_frame.py
--- svn-workbench-1.6.2/Source/wb_diff_frame.py 2009-10-12 03:44:39.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_frame.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_diff_images.py svn-workbench-1.6.6/Source/wb_diff_images.py
--- svn-workbench-1.6.2/Source/wb_diff_images.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_images.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_diff_main.py svn-workbench-1.6.6/Source/wb_diff_main.py
--- svn-workbench-1.6.2/Source/wb_diff_main.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_main.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_diff_processor.py svn-workbench-1.6.6/Source/wb_diff_processor.py
--- svn-workbench-1.6.2/Source/wb_diff_processor.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_processor.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_exceptions.py svn-workbench-1.6.6/Source/wb_exceptions.py
--- svn-workbench-1.6.2/Source/wb_exceptions.py 2006-09-03 03:06:43.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_exceptions.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_frame.py svn-workbench-1.6.6/Source/wb_frame.py
--- svn-workbench-1.6.2/Source/wb_frame.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_frame.py 2011-11-27 22:43:10.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -27,6 +27,7 @@
import wb_platform_specific
import wb_bookmarks_dialogs
import wb_toolbars
+import wb_subversion_utils
import wb_config
@@ -118,6 +119,9 @@
self.menu_actions.Append( wb_ids.id_SP_Revert, T_('Revert...'), T_('Revert') )
self.menu_actions.AppendSeparator()
self.menu_actions.Append( wb_ids.id_SP_Cleanup, T_('Clean up'), T_('Clean up working copy') )
+ if wb_subversion_utils.version_info.has_upgrade:
+ self.menu_actions.AppendSeparator()
+ self.menu_actions.Append( wb_ids.id_SP_Upgrade, T_('Upgrade'), T_('Upgrade working copy') )
self.menu_actions.AppendSeparator()
self.menu_actions.Append( wb_ids.id_SP_CreateTag, T_('Create Tag...'), T_('Create Tag') )
self.menu_actions.Append( wb_ids.id_SP_CreateBranch, T_('Create Branch...'), T_('Create Branch') )
@@ -345,6 +349,10 @@
wx.EVT_MENU( self, wb_ids.id_SP_UpdateTo, self.app.eventWrapper( self.OnSpUpdateTo ) )
wx.EVT_UPDATE_UI( self, wb_ids.id_SP_UpdateTo, self.app.eventWrapper( self.OnUpdateUiSpUpdateTo ) )
+ if wb_subversion_utils.version_info.has_upgrade:
+ wx.EVT_MENU( self, wb_ids.id_SP_Upgrade, self.app.eventWrapper( self.OnSpUpgrade ) )
+ wx.EVT_UPDATE_UI( self, wb_ids.id_SP_Upgrade, self.app.eventWrapper( self.OnUpdateUiSpUpgrade ) )
+
wx.EVT_MENU( self, wb_ids.id_SP_Report_Updates, self.app.eventWrapper( self.OnSpReportUpdates ) )
wx.EVT_UPDATE_UI( self, wb_ids.id_SP_Report_Updates, self.app.eventWrapper( self.OnUpdateUiSpReportUpdates ) )
wx.EVT_MENU( self, wb_ids.id_SP_Report_LocksWc, self.app.eventWrapper( self.OnSpReportLocksWc ) )
@@ -462,13 +470,17 @@
ver_str = ('%d.%d.%d-%d\n' %
(wb_version.major, wb_version.minor,
wb_version.patch, wb_version.build))
- str_message = ((T_('Work Bench version: %s') % ver_str) +
- '\n' + wb_source_control_providers.getProviderAboutStrings() +
- '\nwxPython %d.%d.%d.%d %s' % wx.VERSION +
- '\nPython %d.%d.%d %s %d\n' % sys.version_info +
- T_('\nCopyright Barry Scott (c) 2003-2009. All rights reserved')
- )
- wx.LogMessage( str_message )
+ str_message_parts = [T_('Work Bench version: %s') % ver_str
+ ,wb_source_control_providers.getProviderAboutStrings()
+ ,'wxPython %d.%d.%d.%d %s' % wx.VERSION
+ ,'Python %d.%d.%d %s %d\n' % (sys.version_info[0]
+ ,sys.version_info[1]
+ ,sys.version_info[2]
+ ,sys.version_info[3]
+ ,sys.version_info[4])
+
+ ,T_('\nCopyright Barry Scott (c) 2003-2011. All rights reserved')]
+ wx.LogMessage( '\n'.join( str_message_parts ) )
def OnCmdPreferences( self, event ):
pref_dialog = wb_preferences_dialog.PreferencesDialog( self, self.app )
@@ -770,7 +782,8 @@
def OnUpdateUiSpAnnotate( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned and (not self.ui_state_focus.is_folder) )
@@ -780,7 +793,8 @@
def OnUpdateUiSpCheckin( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.need_checkin
@@ -872,7 +886,8 @@
def OnUpdateUiSpDiffWorkHead( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
if self.ui_state_list is self.ui_state_focus:
@@ -888,14 +903,16 @@
def OnUpdateUiSpDiffWorkBranchOriginBase( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_list.versioned and not self.ui_state_list.new_versioned )
def OnUpdateUiSpDiffWorkBranchOriginHead( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_list.versioned and not self.ui_state_list.new_versioned )
@@ -907,7 +924,8 @@
self.getUpdateUiState()
if wb_config.debug_selection_update: print 'ZF: OnUpdateUiSpHistory versioned %r handler %r' % (
self.ui_state_focus.versioned, self.event_handler)
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned and not self.ui_state_focus.new_versioned )
@@ -917,7 +935,8 @@
def OnUpdateUiSpInfo( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned )
@@ -949,7 +968,8 @@
def OnUpdateUiSpProperties( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned )
@@ -1001,7 +1021,8 @@
def OnUpdateUiSpRevert( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.revertable )
@@ -1019,7 +1040,8 @@
def OnUpdateUiSpUpdate( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
elif self.ui_state_focus.is_project_parent:
@@ -1041,6 +1063,16 @@
def OnUpdateUiSpUpdateTo( self, event ):
self.OnUpdateUiSpUpdate(event)
+ def OnSpUpgrade( self, event ):
+ self.clearUpdateUiState()
+ return self.tree_panel.OnSpUpgrade()
+
+ def OnUpdateUiSpUpgrade( self, event ):
+ self.getUpdateUiState()
+
+ # this is a tree only command
+ event.Enable( self.list_panel.list_handler.project_info.need_upgrade )
+
#----------------------------------------
def Sp_Dispatch( self, sp_func_name ):
self.clearUpdateUiState()
@@ -1102,7 +1134,7 @@
self.text_ctrl = StyledLogCtrl( self.app, self )
# Redirect the console IO to this panel
- sys.stdin = file( wb_platform_specific.getNullDevice(), 'r' )
+ sys.stdin = wb_platform_specific.uOpen( wb_platform_specific.getNullDevice(), 'r' )
if self.app.isStdIoRedirect():
sys.stdout = self
sys.stderr = self
diff -Nru svn-workbench-1.6.2/Source/wb_ids.py svn-workbench-1.6.6/Source/wb_ids.py
--- svn-workbench-1.6.2/Source/wb_ids.py 2009-03-08 03:25:46.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_ids.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -75,6 +75,7 @@
id_SP_Unlock = wx.NewId()
id_SP_Update = wx.NewId()
id_SP_UpdateTo = wx.NewId()
+id_SP_Upgrade = wx.NewId()
id_SP_CreateTag = wx.NewId()
id_SP_CreateBranch = wx.NewId()
diff -Nru svn-workbench-1.6.2/Source/wb_list_panel.py svn-workbench-1.6.6/Source/wb_list_panel.py
--- svn-workbench-1.6.2/Source/wb_list_panel.py 2009-03-08 03:25:46.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_list_panel.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_list_panel_common.py svn-workbench-1.6.6/Source/wb_list_panel_common.py
--- svn-workbench-1.6.2/Source/wb_list_panel_common.py 2009-10-12 01:25:29.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_list_panel_common.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -21,6 +21,7 @@
import wb_ids
import wb_shell_commands
import wb_dialogs
+import wb_platform_specific
class ListSortData:
def __init__( self, order=1, field=0 ):
@@ -54,6 +55,7 @@
self.unversioned = False
self.need_checkin = False
self.need_checkout = False
+ self.need_upgrade = False
self.conflict = False
self.file_exists = False
self.is_folder = False
@@ -328,7 +330,7 @@
if self.list_handler.mayOpen( row ):
self.app.selectTreeNode( filename )
- elif not os.path.isdir( filename ):
+ elif not wb_platform_specific.uPathIsdir( filename ):
wb_shell_commands.EditFile( self.app, self.list_handler.getProjectInfo(), filename )
def isTreeHandler( self ):
diff -Nru svn-workbench-1.6.2/Source/wb_main.py svn-workbench-1.6.6/Source/wb_main.py
--- svn-workbench-1.6.2/Source/wb_main.py 2009-10-04 20:50:50.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_main.py 2012-03-04 05:14:15.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2012 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -27,7 +27,7 @@
or (sys.platform == 'darwin' and '--noredirect' not in sys.argv) ):
stdout_filename = os.environ.get( 'PYSVN_WORKBENCH_STDOUT_LOG', '/tmp/workbench.tmp' )
-elif sys.platform.startswith( 'win' ):
+elif sys.platform.startswith( 'win' ) and '--noredirect' not in sys.argv:
stdout_filename = os.path.join( os.environ[ 'TEMP' ], 'workbench.tmp' )
if stdout_filename is not None:
diff -Nru svn-workbench-1.6.2/Source/wb_platform_macosx_specific.py svn-workbench-1.6.6/Source/wb_platform_macosx_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_macosx_specific.py 2009-10-04 20:50:50.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_macosx_specific.py 2011-01-05 20:46:33.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2004-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2004-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -13,7 +13,7 @@
'''
import os
-import sys
+import types
def getApplicationDir():
return os.path.join( os.environ['HOME'], 'Library/Preferences/org.tigris.pysvn.Workbench' )
@@ -23,3 +23,48 @@
def getNullDevice():
return '/dev/null'
+
+def uPathExists( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.exists( path )
+
+def uPathIsdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.isdir( path )
+
+def uAccess( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.access( path, mode )
+
+def uRemove( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.remove( path )
+
+def uRename( path1, path2 ):
+ if type(path1) == types.UnicodeType:
+ path1 = path1.encode( 'utf-8' )
+
+ if type(path2) == types.UnicodeType:
+ path2 = path2.encode( 'utf-8' )
+
+ return os.rename( path1, path2 )
+
+def uOpen( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return open( path, mode )
+
+def uChdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.chdir( path )
diff -Nru svn-workbench-1.6.2/Source/wb_platform_specific.py svn-workbench-1.6.6/Source/wb_platform_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_specific.py 2007-05-28 19:37:14.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_specific.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_platform_unix_specific.py svn-workbench-1.6.6/Source/wb_platform_unix_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_unix_specific.py 2007-12-01 16:13:47.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_unix_specific.py 2011-01-05 20:46:33.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -13,6 +13,7 @@
'''
import os
+import types
def getApplicationDir():
return os.path.join( os.environ['HOME'], '.WorkBench' )
@@ -22,3 +23,48 @@
def getNullDevice():
return '/dev/null'
+
+def uPathExists( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.exists( path )
+
+def uPathIsdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.isdir( path )
+
+def uAccess( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.access( path, mode )
+
+def uRemove( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.remove( path )
+
+def uRename( path1, path2 ):
+ if type(path1) == types.UnicodeType:
+ path1 = path1.encode( 'utf-8' )
+
+ if type(path2) == types.UnicodeType:
+ path2 = path2.encode( 'utf-8' )
+
+ return os.rename( path1, path2 )
+
+def uOpen( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return open( path, mode )
+
+def uChdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.chdir( path )
diff -Nru svn-workbench-1.6.2/Source/wb_platform_win32_specific.py svn-workbench-1.6.6/Source/wb_platform_win32_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_win32_specific.py 2007-12-01 16:13:47.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_win32_specific.py 2011-01-05 03:50:40.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -28,3 +28,11 @@
def getNullDevice():
return 'NUL'
+
+uPathExists = os.path.exists
+uPathIsdir = os.path.isdir
+uAccess = os.access
+uRemove = os.remove
+uRename = os.rename
+uOpen = open
+uChdir = os.chdir
diff -Nru svn-workbench-1.6.2/Source/wb_preferences.py svn-workbench-1.6.6/Source/wb_preferences.py
--- svn-workbench-1.6.2/Source/wb_preferences.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_preferences.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -105,14 +105,14 @@
new_name = self.pref_filename + '.tmp'
old_name = self.pref_filename + '.old'
- f = file( new_name, 'w' )
+ f = wb_platform_specific.uOpen( new_name, 'w' )
self.pref_data.write( f )
f.close()
- if os.path.exists( self.pref_filename ):
- if os.path.exists( old_name ): # os.rename does not delete automatically on Windows.
- os.remove( old_name )
- os.rename( self.pref_filename, old_name )
- os.rename( new_name, self.pref_filename )
+ if wb_platform_specific.uPathExists( self.pref_filename ):
+ if wb_platform_specific.uPathExists( old_name ): # os.rename does not delete automatically on Windows.
+ wb_platform_specific.uRemove( old_name )
+ wb_platform_specific.uRename( self.pref_filename, old_name )
+ wb_platform_specific.uRename( new_name, self.pref_filename )
self.app.log.info( T_('Wrote preferences to %s') % self.pref_filename )
@@ -123,7 +123,7 @@
def __init__( self, log, xml_pref_filename, ini_pref_filename ):
self.all_sections = {}
- if os.path.exists( xml_pref_filename ):
+ if wb_platform_specific.uPathExists( xml_pref_filename ):
log.info( T_('Reading preferences from %s') % xml_pref_filename )
self.__readXml( xml_pref_filename )
else:
@@ -132,7 +132,7 @@
def __readXml( self, xml_pref_filename ):
try:
- f = file( xml_pref_filename, 'r' )
+ f = wb_platform_specific.uOpen( xml_pref_filename, 'r' )
text = f.read()
f.close()
diff -Nru svn-workbench-1.6.2/Source/wb_preferences_dialog.py svn-workbench-1.6.6/Source/wb_preferences_dialog.py
--- svn-workbench-1.6.2/Source/wb_preferences_dialog.py 2009-10-03 19:22:02.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_preferences_dialog.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -18,6 +18,7 @@
import wb_dialogs
import wb_tree_panel
import wb_toolbars
+import wb_platform_specific
class PreferencesDialog( wx.Dialog ):
def __init__( self, parent, app ):
@@ -168,14 +169,14 @@
# otherwise it must exist
valid = False
if wx.Platform == '__WXMAC__':
- valid = (os.access( self.text_ctrl_editor.GetValue(), os.X_OK )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uAccess( self.text_ctrl_editor.GetValue(), os.X_OK )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
elif wx.Platform == '__WXMSW__':
- valid = (os.path.exists( self.text_ctrl_editor.GetValue() )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uPathExists( self.text_ctrl_editor.GetValue() )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
else:
- valid = (os.access( self.text_ctrl_editor.GetValue(), os.X_OK )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uAccess( self.text_ctrl_editor.GetValue(), os.X_OK )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
if not valid:
wx.MessageBox(
diff -Nru svn-workbench-1.6.2/Source/wb_project_dialogs.py svn-workbench-1.6.6/Source/wb_project_dialogs.py
--- svn-workbench-1.6.2/Source/wb_project_dialogs.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_project_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -12,7 +12,10 @@
'''
import wx
import wx.wizard
+
import wb_source_control_providers
+import wb_platform_specific
+
import pysvn
import os
@@ -143,7 +146,7 @@
wc_path = os.path.expanduser( self.wc_path_ctrl.GetValue().strip() )
url = None
- if os.path.exists( wc_path ):
+ if wb_platform_specific.uPathExists( wc_path ):
try:
info = self.client.info( wc_path )
url = info.url
@@ -508,14 +511,14 @@
state.wc_path = os.path.abspath( os.path.expanduser( self.wc_path_ctrl.GetValue().strip() ) )
state.url_path = self.url_ctrl.GetLabel().strip()
- if not os.path.exists( state.wc_path ):
+ if not wb_platform_specific.uPathExists( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Does not exist\n'
'Choose an existing subversion working copy directory')
% state.wc_path, style=wx.OK|wx.ICON_ERROR );
return False
- if not os.path.isdir( state.wc_path ):
+ if not wb_platform_specific.uPathIsdir( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Is not a directory\n'
'Choose an existing subversion working copy directory')
@@ -557,7 +560,7 @@
wc_path = os.path.expanduser( wc_path )
url = None
- if os.path.exists( wc_path ):
+ if wb_platform_specific.uPathExists( wc_path ):
try:
info = self.parent.client_pi.client_fg.info( wc_path )
url = info.url
@@ -665,8 +668,8 @@
style=wx.OK|wx.ICON_ERROR );
return False
- if os.path.exists( state.wc_path ):
- if not os.path.isdir( state.wc_path ):
+ if wb_platform_specific.uPathExists( state.wc_path ):
+ if not wb_platform_specific.uPathIsdir( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Is not a directory\n'
'Choose a directory that is empty and not in use by subversion')
diff -Nru svn-workbench-1.6.2/Source/wb_read_file.py svn-workbench-1.6.6/Source/wb_read_file.py
--- svn-workbench-1.6.2/Source/wb_read_file.py 2007-04-07 17:51:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_read_file.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2005-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2005-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -13,8 +13,10 @@
import locale
import codecs
+import wb_platform_specific
+
def readFileContentsAsUnicode( filename ):
- f = file( filename, 'r' )
+ f = wb_platform_specific.uOpen( filename, 'r' )
contents = f.read()
f.close()
@@ -37,15 +39,22 @@
if( len(contents) > len(codecs.BOM_UTF8)
and contents[0:len(codecs.BOM_UTF8)] == codecs.BOM_UTF8 ):
encoding = 'utf-8'
+
elif( len(contents) > len(codecs.BOM_UTF16_LE)
and contents[0:len(codecs.BOM_UTF16_LE)] in [codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE]):
encoding = 'utf-16'
+
elif( len(contents) > len(codecs.BOM_UTF32_LE)
and contents[0:len(codecs.BOM_UTF32_LE)] in [codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE]):
encoding = 'utf-32'
+
else:
encoding = locale.getdefaultlocale()[1]
+ # Mac says mac-roman when utf-8 is what is required
+ if encoding == 'mac-roman':
+ encoding = 'utf-8'
+
if encoding is None:
encoding = 'iso8859-1'
diff -Nru svn-workbench-1.6.2/Source/wb_shell_commands.py svn-workbench-1.6.6/Source/wb_shell_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_commands.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_commands.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_shell_macosx_commands.py svn-workbench-1.6.6/Source/wb_shell_macosx_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_macosx_commands.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_macosx_commands.py 2011-01-05 03:50:40.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -15,6 +15,8 @@
import subprocess
import xml.sax.saxutils
+import wb_platform_specific
+
__sigchld_handler_installed = False
def getTerminalProgramList():
@@ -24,12 +26,12 @@
return ['Finder']
def GuiDiffFiles( app, options ):
- cmd_line = "'%s' %s &" % (app.prefs.getDiffTool().gui_diff_tool, options)
+ cmd_line = u"'%s' %s &" % (app.prefs.getDiffTool().gui_diff_tool, options)
app.log.info( cmd_line )
__run_command_with_output( cmd_line )
def ShellDiffFiles( app, options ):
- cmd_line = "'%s' %s" % (app.prefs.getDiffTool().shell_diff_tool, options)
+ cmd_line = u"'%s' %s" % (app.prefs.getDiffTool().shell_diff_tool, options)
app.log.info( cmd_line )
return __run_command_with_output( cmd_line )
@@ -38,30 +40,31 @@
if p.editor_image:
if p.editor_options:
- command_line = '"%s" %s "%s" &' % \
- (p.editor_image, p.editor_options, filename)
+ command_line = (u'"%s" %s "%s" &' %
+ (p.editor_image, p.editor_options, filename))
else:
- command_line = '"%s" "%s" &' % \
- (p.editor_image, filename)
+ command_line = (u'"%s" "%s" &' %
+ (p.editor_image, filename))
else:
- command_line = '"open" -e "%s" &' % filename
+ command_line = (u'"open" -e "%s" &' %
+ (filename,))
app.log.info( command_line )
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
- os.system( command_line )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
+ os.system( command_line.encode( 'utf-8' ) )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def ShellOpen( app, project_info, filename ):
app.log.info( T_('Open %s') % filename )
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
- __run_command_with_output( 'open "%s"' % filename )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
+ __run_command_with_output( u'open "%s"' % (filename,) )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def CommandShell( app, project_info ):
p = app.prefs.getShell()
@@ -83,13 +86,12 @@
title.append( pi.project_name )
pi = pi.parent
- commands = 'cd "%s"' % working_dir
+ commands = u'cd "%s"' % working_dir
if len( p.shell_init_command ) > 0:
- commands = commands + ';. "%s"\n' % p.shell_init_command
+ commands = commands + u';. "%s"\n' % p.shell_init_command
- f = open( shell_script_filename, 'w' )
- f.write( '''
+ contents = u'''
tell application "iTerm"
activate
@@ -116,10 +118,13 @@
end
''' % (' '.join( title ).replace( '"', '\\"' )
- ,commands.replace( '"', '\\"' )) )
+ ,commands.replace( '"', '\\"' ))
+
+ f = wb_platform_specific.uOpen( shell_script_filename, 'w' )
+ f.write( contents.encode( 'utf-8' ) )
f.close()
- command_line = '"osascript" "%s" &' % shell_script_filename
+ command_line = u'"osascript" "%s" &' % shell_script_filename
app.log.info( command_line )
__run_command_with_output( command_line )
@@ -137,13 +142,12 @@
title.append( pi.project_name )
pi = pi.parent
- commands = 'cd "%s"' % working_dir
+ commands = u'cd "%s"' % working_dir
if len( p.shell_init_command ) > 0:
commands = commands + ';. "%s"\n' % p.shell_init_command
- f = open( shell_script_filename, 'w' )
- f.write( '''<?xml version="1.0" encoding="UTF-8"?>
+ contents = u'''<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
@@ -158,16 +162,20 @@
</array>
</dict>
</plist>
-''' % (xml.sax.saxutils.escape( ' '.join( title ) ), xml.sax.saxutils.escape( commands )) )
+''' % (xml.sax.saxutils.escape( ' '.join( title ) )
+ ,xml.sax.saxutils.escape( commands ))
+
+ f = wb_platform_specific.uOpen( shell_script_filename, 'w' )
+ f.write( contents.encode( 'utf-8' ) )
f.close()
- command_line = '"open" "%s" &' % shell_script_filename
+ command_line = u'"open" "%s" &' % shell_script_filename
app.log.info( command_line )
__run_command_with_output( command_line )
def FileBrowser( app, project_info ):
- command_line = 'open -a "Finder" "%s" &' % project_info.getWorkingDir()
+ command_line = u'open -a "Finder" "%s" &' % project_info.getWorkingDir()
app.log.info( command_line )
__run_command_with_output( command_line )
@@ -217,11 +225,11 @@
print '%s, rc=%d' % (err_prefix, rc)
def __run_command_with_output( command_line ):
- err_prefix = 'error running %s' % command_line
+ err_prefix = u'error running %s' % command_line
try:
proc = subprocess.Popen(
- command_line,
+ command_line.encode( 'utf-8' ),
shell=True,
close_fds=True,
stdin=subprocess.PIPE,
diff -Nru svn-workbench-1.6.2/Source/wb_shell_unix_commands.py svn-workbench-1.6.6/Source/wb_shell_unix_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_unix_commands.py 2009-10-11 22:00:29.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_unix_commands.py 2011-01-05 03:50:40.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -13,11 +13,14 @@
import os
import signal
import subprocess
+import types
+
+import wb_platform_specific
__sigchld_handler_installed = False
gui_terminals = ['gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal']
-gui_file_browsers = ['nautilus', 'konqueror', 'thunar']
+gui_file_browsers = ['nautilus', 'konqueror', 'thunar', 'dolphin']
def getTerminalProgramList():
return gui_terminals[:]
@@ -41,20 +44,20 @@
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
__run_command( app, editor_image, editor_args )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def ShellOpen( app, project_info, filename ):
app.log.info( T_('Open %s') % filename )
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
- os.system( "gnome-open '%s'" % filename )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
+ os.system( "xdg-open '%s'" % filename )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def GuiDiffFiles( app, options ):
cmd_line = "'%s' %s &" % (app.prefs.getDiffTool().gui_diff_tool, options)
@@ -79,7 +82,7 @@
title.append( pi.project_name )
pi = pi.parent
- f = open( shell_script_filename, 'w' )
+ f = wb_platform_specific.uOpen( shell_script_filename, 'w' )
f.write( 'export WB_WD="%s"\n' % working_dir )
f.write( 'cd "%s"\n' % working_dir )
@@ -105,10 +108,12 @@
if terminal_program == 'konsole':
__run_command( app, terminal_program,
- ['-T', ' '.join( title ), '--workdir', working_dir, '-e', shell_script_filename] )
+ ['--title', ' '.join( title ), '--workdir', working_dir, '-e', '/bin/sh', shell_script_filename] )
+
elif terminal_program in ('gnome-terminal', 'xfce4-terminal'):
__run_command( app, terminal_program,
['--title', ' '.join( title ), '--working-directory', working_dir, '-x', shell_script_filename] )
+
elif terminal_program == 'xterm':
__run_command( app, terminal_program,
['-T', ' '.join( title ), '-e', shell_script_filename] )
@@ -130,9 +135,10 @@
if not found:
return
- if browser_program == 'konsole':
+ if browser_program == 'konqueror':
__run_command( app, browser_program, ['--mimetype', 'inode/directory', project_info.getWorkingDir()] )
- elif browser_program in ('nautilus', 'thunar'):
+
+ elif browser_program in ('nautilus', 'thunar', 'dolphin'):
__run_command( app, browser_program, [project_info.getWorkingDir()] )
def __run_command( app, cmd, args ):
@@ -158,8 +164,17 @@
signal.signal( signal.SIGCHLD, __sigchld_handler )
__sigchld_handler_installed = True
+ cmd = asUtf8( cmd )
+ args = [asUtf8( arg ) for arg in args]
+
os.spawnvpe( os.P_NOWAIT, cmd, [cmd]+args, env )
+def asUtf8( s ):
+ if type( s ) == types.UnicodeType:
+ return s.encode( 'utf-8' )
+ else:
+ return s
+
def __sigchld_handler( signum, frame ):
try:
while True:
diff -Nru svn-workbench-1.6.2/Source/wb_shell_win32_commands.py svn-workbench-1.6.6/Source/wb_shell_win32_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_win32_commands.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_win32_commands.py 2011-02-28 01:16:53.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -16,6 +16,8 @@
import os
import string
import subprocess
+import wb_platform_specific
+
def getTerminalProgramList():
return ['CMD']
@@ -28,13 +30,14 @@
if p.editor_image:
if p.editor_options:
- command_line = '"%s" %s "%s"' % \
- (p.editor_image, p.editor_options, filename)
+ command_line = (u'"%s" %s "%s"' %
+ (p.editor_image, p.editor_options, filename))
else:
- command_line = '"%s" "%s"' % \
- (p.editor_image, filename)
+ command_line = (u'"%s" "%s"' %
+ (p.editor_image, filename))
else:
- command_line = '"notepad.exe" "%s"' % filename
+ command_line = (u'"notepad.exe" "%s"' %
+ (filename,))
app.log.info( command_line )
CreateProcess( app, command_line, project_info.getWorkingDir() )
@@ -45,7 +48,9 @@
CreateProcess( app, cmd_line, os.path.curdir )
def ShellDiffFiles( app, options ):
- cmd_line = '"%s" %s' % (app.prefs.getDiffTool().shell_diff_tool, options)
+ cmd_line = (u'"%s" %s' %
+ (app.prefs.getDiffTool().shell_diff_tool
+ ,options))
app.log.info( cmd_line )
return __run_command_with_output( cmd_line )
@@ -78,23 +83,28 @@
title.append( pi.project_name )
pi = pi.parent
- f = open( shell_script_filename, 'w' )
- f.write( "@title %s\n" % string.join( title, ' ' ) )
- f.write( "@set PYTHONPATH=\n" )
- f.write( '@cd %s\n' % working_dir )
- f.write( '@echo on\n' )
-
+ cmd_lines = [
+ u"@title %s\n" % (' '.join( title ),),
+ u"@set PYTHONPATH=\n",
+ u'@cd %s\n' % (working_dir,),
+ u'@echo on\n',
+ ]
if len( p.shell_init_command ) > 0:
- f.write( 'call %s\n' % p.shell_init_command )
+ cmd_lines.append( u'call %s\n' % (p.shell_init_command,) )
+
+ f = open( shell_script_filename, 'w' )
+ for line in cmd_lines:
+ f.write( line.encode( 'utf-8' ) )
f.close()
- command_line = '"%s" /k %s' % (os.environ['ComSpec'], shell_script_filename)
+ command_line = u'"%s" /k %s' % (os.environ['ComSpec'], shell_script_filename)
app.log.info( command_line )
CreateProcess( app, command_line, working_dir )
def FileBrowser( app, project_info ):
- command_line = 'explorer.exe /e,%s' % project_info.getWorkingDir()
+ command_line = (u'explorer.exe /e,%s' %
+ (project_info.getWorkingDir(),))
app.log.info( command_line )
CreateProcess( app, command_line, project_info.getWorkingDir() )
@@ -125,7 +135,7 @@
,'reason': detail} )
def ensureDirectory( app, current_dir ):
- if not os.path.exists( current_dir ):
+ if not wb_platform_specific.uPathExists( current_dir ):
try:
os.makedirs( current_dir )
app.log.info( T_('Created directory %s') % current_dir )
@@ -136,7 +146,7 @@
,'error': e} )
return 0
- elif not os.path.isdir( current_dir ):
+ elif not wb_platform_specific.uPathIsdir( current_dir ):
app.log.error( T_('%s is not a directory') % current_dir )
return 0
diff -Nru svn-workbench-1.6.2/Source/wb_show_diff_frame.py svn-workbench-1.6.6/Source/wb_show_diff_frame.py
--- svn-workbench-1.6.2/Source/wb_show_diff_frame.py 2009-10-12 01:36:44.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_show_diff_frame.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -23,6 +23,10 @@
# fix up line endings CRLF to LF and CR to LF
text = raw_text.replace( '\r\n', '\n' ).replace( '\r', '\n' )
+ try:
+ text = text.decode( 'utf-8' )
+ except ValueError:
+ pass
diff_prefs = app.prefs.getDiffWindow()
diff -Nru svn-workbench-1.6.2/Source/wb_source_control_providers.py svn-workbench-1.6.6/Source/wb_source_control_providers.py
--- svn-workbench-1.6.2/Source/wb_source_control_providers.py 2009-03-08 01:14:14.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_source_control_providers.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_annotate.py svn-workbench-1.6.6/Source/wb_subversion_annotate.py
--- svn-workbench-1.6.2/Source/wb_subversion_annotate.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_annotate.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_checkin.py svn-workbench-1.6.6/Source/wb_subversion_checkin.py
--- svn-workbench-1.6.2/Source/wb_subversion_checkin.py 2009-10-03 17:21:08.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_checkin.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -30,7 +30,7 @@
class CheckinFrame(wx.Frame):
def __init__( self, app, project_info, all_files ):
- wx.Frame.__init__( self, None, -1, T_('Check in for %s') % project_info.wc_path, size=(700,500) )
+ wx.Frame.__init__( self, None, -1, T_('Check in for %s') % project_info.wc_path, size=(1000,500) )
self.app = app
@@ -110,7 +110,7 @@
self.last_log_message_text = None
try:
- f = file( self.message_filename, 'r' )
+ f = wb_platform_specific.uOpen( self.message_filename, 'r' )
self.last_log_message_text = f.read().decode('utf-8').strip()
f.close()
except EnvironmentError:
@@ -232,7 +232,7 @@
message = self.log_message_ctrl.GetValue().encode('utf-8')
try:
- f = file( self.message_filename, 'w' )
+ f = wb_platform_specific.uOpen( self.message_filename, 'w' )
f.write( message )
f.close()
except EnvironmentError:
@@ -329,7 +329,10 @@
self.all_excluded_files = {}
self.__parent = parent
-
+
+ def overrideColumnInfo( self ):
+ self.column_info.setColumnWidth( 'Name', self.column_info.getColumnWidth( 'Name' ) + 20 )
+
def getContextMenu( self ):
menu_template = [
('', wb_ids.id_File_Edit, T_('Edit') )
@@ -398,7 +401,7 @@
# Set the project files to be this new list
self.project_info.all_files = all_files
-
+
class CheckinProjectInfo:
def __init__( self, project_info, all_files ):
self.all_files = all_files
@@ -407,6 +410,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_diff.py svn-workbench-1.6.6/Source/wb_subversion_diff.py
--- svn-workbench-1.6.2/Source/wb_subversion_diff.py 2009-04-13 19:35:09.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_diff.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -20,6 +20,7 @@
import wb_show_diff_frame
import wb_read_file
import wb_diff_frame
+import wb_platform_specific
debug_diff = False
@@ -93,18 +94,18 @@
for path_info in (old_path_info, new_path_info):
if( path_info.revision is None
or path_info.revision.kind == pysvn.opt_revision_kind.working ):
- if not os.path.exists( path_info.path ):
+ if not wb_platform_specific.uPathExists( path_info.path ):
app.log_error( '"%s" does not exist.' % path_info.path )
fd, path_info.path = tempfile.mkstemp( suffix=os.path.basename( path_info.path ) )
os.close( fd )
# keep track of the temp file
app.all_temp_files.append( path_info.path )
- if os.path.isdir( path_info.path ):
+ if wb_platform_specific.uPathIsdir( path_info.path ):
app.log_error( '"%s" refers to a directory.' % path_info.path )
return
- if not os.access( path_info.path, os.R_OK ):
+ if not wb_platform_specific.uAccess( path_info.path, os.R_OK ):
app.log_error( '"%s" cannot be read.' % path_info.path )
return
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_history.py svn-workbench-1.6.6/Source/wb_subversion_history.py
--- svn-workbench-1.6.2/Source/wb_subversion_history.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_history.py 2011-01-05 03:50:40.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -17,6 +17,7 @@
import os
import time
import types
+import urllib
import pysvn
@@ -53,7 +54,10 @@
self.author = author
self.date = date
self.label = label
- self.message = message
+ try:
+ self.message = message.decode( 'utf-8' )
+ except ValueError:
+ self.message = message
self.changed_paths = changed_paths
self.changed_paths.sort( self.by_changed_path )
@@ -70,14 +74,22 @@
if filter_field == T_('Author'):
return filter_text.lower() in self.author.lower()
+
elif filter_field == T_('Comment'):
return filter_text.lower() in self.message.lower()
+
elif filter_field == T_('Path'):
for changed_path in self.changed_paths:
- if filter_text.lower() in changed_path.path.lower():
+ try:
+ c_p_p = changed_path.path.decode('utf-8')
+ except ValueError:
+ c_p_p = changed_path.path
+
+ if filter_text.lower() in c_p_p.lower():
return True
return False
+
else:
assert( False )
return False
@@ -101,7 +113,8 @@
if len( all_log_entries ) == 0:
return info.URL, all_history_entries
- repos_path = info.URL[len(info.repos_root_URL):]
+ repos_path = urllib.unquote( info.URL[len(info.repos_root_URL):].encode( 'utf-8' ) )
+
for log in all_log_entries:
# author is optional
if 'author' not in log:
@@ -110,7 +123,7 @@
all_history_entries.append(
LogEntry(
log.revision.number,
- info.repos_root_URL+repos_path,
+ info.URL,
log.author,
log.date,
'',
@@ -119,7 +132,11 @@
for changed_path in log.changed_paths:
if changed_path.action in ['A','M']:
- if repos_path == changed_path.path:
+ if changed_path.path is not None:
+ c_p_p = changed_path.path.decode( 'utf-8' )
+ else:
+ c_p_p = None
+ if repos_path == c_p_p:
if changed_path.copyfrom_path is not None:
repos_path = changed_path.copyfrom_path
break
@@ -484,7 +501,7 @@
# Arrange the panels with the splitter windows
self.splitter.AppendWindow( self.panel_history, 250 )
self.splitter.AppendWindow( self.panel_comment, 100 )
- self.splitter.AppendWindow( self.panel_changed_paths, 150 )
+ self.splitter.AppendWindow( self.panel_changed_paths, 200 )
self.selected_revisions = {}
@@ -508,7 +525,7 @@
char_width = 9
self.list_ctrl.SetColumnWidth( self.col_revision, 7*char_width )
self.list_ctrl.SetColumnWidth( self.col_author, 14*char_width )
- self.list_ctrl.SetColumnWidth( self.col_date, 15*char_width )
+ self.list_ctrl.SetColumnWidth( self.col_date, 18*char_width )
self.list_ctrl.SetColumnWidth( self.col_label, 12*char_width )
self.list_ctrl.SetColumnWidth( self.col_message, 40*char_width )
@@ -525,9 +542,9 @@
char_width = 9
self.paths_ctrl.SetColumnWidth( self.col_action, 7*char_width )
- self.paths_ctrl.SetColumnWidth( self.col_path, 40*char_width )
+ self.paths_ctrl.SetColumnWidth( self.col_path, 60*char_width )
self.paths_ctrl.SetColumnWidth( self.col_copyfrom_revision, 6*char_width )
- self.paths_ctrl.SetColumnWidth( self.col_copyfrom_path, 40*char_width )
+ self.paths_ctrl.SetColumnWidth( self.col_copyfrom_path, 60*char_width )
self.initButtons( self.v_sizer_history )
@@ -686,7 +703,7 @@
self.paths_ctrl.InsertStringItem( index,
action_map.get( info.action, info.action ) )
self.paths_ctrl.SetStringItem( index, self.col_path,
- info.path )
+ info.path.decode( 'utf-8' ) )
if info.copyfrom_path is not None:
self.paths_ctrl.SetStringItem( index, self.col_copyfrom_revision,
str( info.copyfrom_revision.number ) )
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_info_dialog.py svn-workbench-1.6.6/Source/wb_subversion_info_dialog.py
--- svn-workbench-1.6.2/Source/wb_subversion_info_dialog.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_info_dialog.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_list_handler.py svn-workbench-1.6.6/Source/wb_subversion_list_handler.py
--- svn-workbench-1.6.2/Source/wb_subversion_list_handler.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_list_handler.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -25,6 +25,7 @@
import wb_clipboard
import wb_diff_frame
import wb_dialogs
+import wb_platform_specific
class SubversionListHandler(wb_subversion_list_handler_common.SubversionListHandlerCommon):
def __init__( self, app, list_panel, project_info ):
@@ -34,9 +35,14 @@
return '<SubversionListHandler %r>' % self.project_info
def getContextMenu( self ):
- if self.project_info.need_checkout:
+ if self.project_info.need_upgrade:
+ menu_template = \
+ [('', wb_ids.id_SP_Upgrade, T_('Upgrade') )]
+
+ elif self.project_info.need_checkout:
menu_template = \
[('', wb_ids.id_SP_Checkout, T_('Checkout') )]
+
else:
menu_template = \
[('', wb_ids.id_File_Edit, T_('Edit') )]
@@ -117,7 +123,7 @@
all_status = []
try:
for filename in paste_data.getAllFilenames():
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
dir_status = self.project_info.client_bg.status( os.path.dirname( filename ), recurse=False )
all_status.extend( [s for s in dir_status if s.path == filename] )
else:
@@ -149,7 +155,7 @@
else:
rename_title = T_('Rename')
- while os.path.exists( new_filename ):
+ while wb_platform_specific.uPathExists( new_filename ):
new_name, force = self.app.renameFile( rename_title, os.path.basename( old_filename ), None )
if new_name is None:
return
@@ -168,7 +174,7 @@
try:
if paste_data.isCopy():
- if os.path.isdir( old_filename ):
+ if wb_platform_specific.uPathIsdir( old_filename ):
if is_controlled:
self.project_info.client_bg.copy( old_filename, new_filename )
else:
@@ -179,11 +185,11 @@
ok = True
else:
- if os.path.isdir( old_filename ):
+ if wb_platform_specific.uPathIsdir( old_filename ):
if is_controlled:
self.project_info.client_bg.move( old_filename, new_filename, force=force )
else:
- os.rename( old_filename, new_filename )
+ wb_platform_specific.uRename( old_filename, new_filename )
else:
text_status = self.getTextStatus( status )
prop_status = self.getPropStatus( status )
@@ -249,7 +255,7 @@
if is_controlled:
if text_status == pysvn.wc_status_kind.added:
self.project_info.client_fg.revert( filename )
- os.remove( filename )
+ wb_platform_specific.uRemove( filename )
elif( text_status == pysvn.wc_status_kind.modified
or prop_status == pysvn.wc_status_kind.modified ):
@@ -260,7 +266,7 @@
self.project_info.client_fg.remove( filename )
else:
- os.remove( filename )
+ wb_platform_specific.uRemove( filename )
except pysvn.ClientError, e:
self.app.log_client_error( e )
@@ -301,7 +307,7 @@
def __copyFile( self, old_filename, new_full_filename, is_controlled, text_status, prop_status ):
if not is_controlled:
raise EnvironmentError( 'TBD - copy file' )
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
return
if( text_status == pysvn.wc_status_kind.normal
@@ -312,7 +318,7 @@
def __moveFile( self, old_filename, new_full_filename, is_controlled, text_status, prop_status ):
if not is_controlled:
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
return
if text_status == pysvn.wc_status_kind.added:
@@ -323,7 +329,7 @@
print( T_('Rename %(from)s %(to)s') %
{'from': old_filename
,'to': new_full_filename} )
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
self.project_info.client_fg.add( new_full_filename )
# all_prop_lists is empty if there are no properties set
@@ -339,7 +345,7 @@
for tmp_name_index in range( 100 ):
tmp_filename = os.path.join( os.path.dirname( old_filename ),
'%s.%d.tmp' % (new_full_filename, tmp_name_index) )
- if not os.path.exists( tmp_filename ):
+ if not wb_platform_specific.uPathExists( tmp_filename ):
new_full_tmp_filename = tmp_filename
break
@@ -353,15 +359,15 @@
print( T_('Rename %(from)s %(to)s') %
{'from': old_filename
,'to': new_full_tmp_filename} )
- os.rename( old_filename, new_full_tmp_filename )
+ wb_platform_specific.uRename( old_filename, new_full_tmp_filename )
self.project_info.client_fg.revert( old_filename )
self.project_info.client_fg.move( old_filename, new_full_filename )
- os.remove( new_full_filename )
+ wb_platform_specific.uRemove( new_full_filename )
print( T_('Rename %(from)s %(to)s') %
{'from': new_full_tmp_filename
,'to': new_full_tmp_filename} )
- os.rename( new_full_tmp_filename, new_full_filename )
+ wb_platform_specific.uRename( new_full_tmp_filename, new_full_filename )
if len(all_props) > 0:
_, prop_dict = all_props[0]
@@ -460,8 +466,11 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
- T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
+ T_("Warning"),
+ style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
@@ -513,8 +522,11 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
- T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
+ T_("Warning"),
+ style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_list_handler_common.py svn-workbench-1.6.6/Source/wb_subversion_list_handler_common.py
--- svn-workbench-1.6.2/Source/wb_subversion_list_handler_common.py 2009-10-03 19:22:02.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_list_handler_common.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -26,6 +26,7 @@
import wb_subversion_properties_dialog
import wb_subversion_diff
import wb_config
+import wb_platform_specific
col_labels = [
('Name', U_('Name'), 25, 10, 100, wx.LIST_FORMAT_LEFT),
@@ -106,6 +107,15 @@
for index, name in enumerate( self.column_order ):
self.column_info_by_name[ name ].column = index
+ def getColumnWidth( self, column_name ):
+ return self.column_info_by_name[ column_name ].width
+
+ def setColumnWidth( self, column_name, width ):
+ info = self.column_info_by_name[ column_name ]
+ width = max( info.min_width, width )
+ width = min( info.max_width, width )
+ info.width = width
+
def getColumnOrder( self ):
return self.column_order
@@ -200,6 +210,10 @@
def setupColumnInfo( self ):
self.column_info.setFromPreferenceData( self.app.prefs.getView() )
+ self.overrideColumnInfo()
+
+ def overrideColumnInfo( self ):
+ pass
def setupColumns( self ):
self.setupColumnInfo()
@@ -228,8 +242,9 @@
self.list_panel.updateHeader( self.project_info.url, self.project_info.wc_path )
- # nothing doing if the wc does not exist
- if self.project_info.need_checkout:
+ # nothing doing if the wc does not exist or needs upgrade
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
# empty the list
g.DeleteAllItems()
@@ -283,7 +298,8 @@
def sortList( self, sort_data ):
self.app.log.debug('sortList' )
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
# nothing to sort
return
@@ -354,6 +370,12 @@
def OnGetItemText( self, index, col ):
column = self.column_info.getNameByColumn( col )
+ if self.project_info.need_upgrade:
+ if column == self.col_name:
+ return T_('Use the Upgrade command to convert the working copy to the required format')
+ else:
+ return ''
+
if self.project_info.need_checkout:
if column == self.col_name:
if self.isProjectParent():
@@ -404,7 +426,8 @@
return value
def OnGetItemAttr( self, index ):
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
colour = wb_config.colour_status_need_checkout
else:
colour = self.statusColour( self.all_files[ index ] )
@@ -417,7 +440,8 @@
return self.all_item_attr[ colour ]
def isItemImageFolder(self, item):
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
return True
elif self.GetItemIsDir( item ):
@@ -429,14 +453,14 @@
def GetItemIsDir(self, item):
status = self.all_files[ item ]
if status.entry is None:
- is_dir = os.path.isdir( status.path )
+ is_dir = wb_platform_specific.uPathIsdir( status.path )
else:
is_dir = status.entry.kind == pysvn.node_kind.dir
return is_dir
def __get_NameColumn( self, status, prefix_len ):
if status.entry is None:
- is_dir = os.path.isdir( status.path )
+ is_dir = wb_platform_specific.uPathIsdir( status.path )
else:
is_dir = status.entry.kind == pysvn.node_kind.dir
if is_dir:
@@ -493,7 +517,7 @@
return wb_subversion_utils.fmtDateTime( status.entry.commit_time )
def __get_LockCommentColumn( self, status ):
- if status.repos_lock is not None:
+ if status.repos_lock is not None and status.repos_lock.comment is not None:
comment = status.repos_lock.comment.replace( '\n', ' ' )
elif status.entry is not None and status.entry.lock_comment is not None:
comment = status.entry.lock_comment.replace( '\n', ' ' )
@@ -516,6 +540,10 @@
state = wb_list_panel_common.ListItemState()
+ if self.project_info.need_upgrade:
+ state.need_upgrade = True
+ return state
+
if self.project_info.need_checkout:
state.need_checkout = True
state.ui_project_parent = True
@@ -535,10 +563,10 @@
for row in all_rows:
filename = self.all_files[ row ].path
- if not os.path.exists( filename ):
+ if not wb_platform_specific.uPathExists( filename ):
state.file_exists = False
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
state.modified = False
state.conflict = False
state.file_exists = False
@@ -603,7 +631,7 @@
def mayOpen( self, row_or_status ):
status = self.getStatusFromRowOrStatus( row_or_status )
if status.entry is None:
- return not os.path.isdir( self.getFilename( row_or_status ) )
+ return not wb_platform_specific.uPathIsdir( self.getFilename( row_or_status ) )
else:
return status.entry.kind == pysvn.node_kind.dir
@@ -974,7 +1002,7 @@
prop_dict = {}
else:
_, prop_dict = prop_list[0]
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
dialog = wb_subversion_properties_dialog.DirPropertiesDialog( self.app,
self.list_panel.list_ctrl,
filename,
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_project_info.py svn-workbench-1.6.6/Source/wb_subversion_project_info.py
--- svn-workbench-1.6.2/Source/wb_subversion_project_info.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_project_info.py 2012-03-04 05:14:15.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2012 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -29,6 +29,8 @@
import wb_subversion_tree_handler
import wb_subversion_list_handler
import wb_subversion_utils
+import wb_platform_specific
+import wb_subversion_utils
_fast_proplist = True
@@ -48,6 +50,7 @@
self.all_tree_files_status = []
self.need_checkout = True
+ self.need_upgrade = False
self.need_properties = False
self.files_properties = {}
@@ -179,8 +182,13 @@
self.notification_of_files_in_conflict += 1
# print anything that gets through the filter
- msg = '%s %s\n' % (action_letter, arg_dict['path'])
- self.app.foregroundProcess( sys.stdout.write, (msg,) )
+ try:
+ path = arg_dict['path'].decode( 'utf-8' )
+ except ValueError:
+ path = arg_dict['path']
+
+ msg = u'%s %s\n' % (action_letter, path)
+ self.app.foregroundProcess( sys.stdout.write, (msg.encode( 'utf-8' ),) )
def readPreferences( self, get_option ):
wb_source_control_providers.ProjectInfo.readPreferences( self, get_option )
@@ -261,15 +269,26 @@
self.dir_status = None
self.need_checkout = True
- if not os.path.exists( self.wc_path ):
+ if not wb_platform_specific.uPathExists( self.wc_path ):
return
p = self.app.prefs.getView()
+
try:
+ self.need_upgrade = False
entry = self.client_fg.info( self.wc_path )
+
except pysvn.ClientError, e:
+ if wb_subversion_utils.version_info.has_upgrade:
+ # is it the 'Working copy XXX is too old' error?
+ if e.args[1][0][1] == pysvn.svn_err.wc_upgrade_required:
+ self.need_checkout = False
+ self.need_upgrade = True
+ return
+
# is it the 'is not a working copy' error?
if e.args[1][0][1] == pysvn.svn_err.wc_not_directory:
+ # need_checkout
return
print 'Error: %s' % e.args[0]
@@ -282,12 +301,14 @@
self.all_files_status = self.client_fg.status( self.wc_path, recurse=p.view_recursive, ignore=False )
+
self.need_checkout = False
# sort list
self.all_files_status.sort( wb_subversion_utils.by_path )
+
# remember dir_status before filtering
- if len(self.all_files_status) > 0 and self.all_files_status[0].path == self.wc_path:
+ if len(self.all_files_status) > 0 and os.path.normcase( self.all_files_status[0].path ) == os.path.normcase( self.wc_path ):
self.dir_status = self.all_files_status[0]
del self.all_files_status[0]
@@ -372,7 +393,7 @@
return self.dir_status
def __proplist( self, path ):
- if os.path.isdir( path ):
+ if wb_platform_specific.uPathIsdir( path ):
prop_file = os.path.join( path, '.svn', 'dir-props' )
base_prop_file = os.path.join( path, '.svn', 'dir-prop-base' )
else:
@@ -382,10 +403,10 @@
result = {}
try:
- f = file( prop_file )
+ f = wb_platform_specific.uOpen( prop_file )
except EnvironmentError:
try:
- f = file( base_prop_file )
+ f = wb_platform_specific.uOpen( base_prop_file )
except EnvironmentError:
return result
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_properties_dialog.py svn-workbench-1.6.6/Source/wb_subversion_properties_dialog.py
--- svn-workbench-1.6.2/Source/wb_subversion_properties_dialog.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_properties_dialog.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_provider.py svn-workbench-1.6.6/Source/wb_subversion_provider.py
--- svn-workbench-1.6.2/Source/wb_subversion_provider.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_provider.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_branch_changes.py svn-workbench-1.6.6/Source/wb_subversion_report_branch_changes.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_branch_changes.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_branch_changes.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -18,7 +18,6 @@
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
class ReportBranchChangesFrame(wx.Frame):
def __init__( self, app, project_info, all_files ):
@@ -177,6 +176,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_lock.py svn-workbench-1.6.6/Source/wb_subversion_report_lock.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_lock.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_lock.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -16,13 +16,13 @@
import time
import pysvn
+import wb_config
import wb_ids
import wb_images
import wb_exceptions
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
class ReportLockFrame(wx.Frame):
def __init__( self, app, project_info, all_files, show_repos_locks=False ):
@@ -220,6 +220,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_revision_changes.py svn-workbench-1.6.6/Source/wb_subversion_report_revision_changes.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_revision_changes.py 2009-10-03 17:21:08.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_revision_changes.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2009-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -23,7 +23,6 @@
import wb_subversion_diff
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
import wb_subversion_annotate
import wb_subversion_info_dialog
import wb_subversion_history
@@ -294,6 +293,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_updates.py svn-workbench-1.6.6/Source/wb_subversion_report_updates.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_updates.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_updates.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -23,7 +23,6 @@
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
id_exclude = wx.NewId()
id_include = wx.NewId()
@@ -254,6 +253,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_tree_handler.py svn-workbench-1.6.6/Source/wb_subversion_tree_handler.py
--- svn-workbench-1.6.2/Source/wb_subversion_tree_handler.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_tree_handler.py 2012-03-03 23:31:36.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -33,6 +33,7 @@
import wb_clipboard
import wb_dialogs
import wb_config
+import wb_platform_specific
class SubversionProject(wb_tree_panel.TreeProjectItem):
def __init__( self, app, project_info ):
@@ -52,7 +53,7 @@
dir_status = self.project_info.getDirStatus()
if dir_status is None:
# no status available - make a guess
- if not os.path.exists( self.project_info.wc_path ):
+ if not wb_platform_specific.uPathExists( self.project_info.wc_path ):
# nothing there
return False
else:
@@ -61,7 +62,7 @@
for file in self.project_info.getTreeFilesStatus():
if( (file.entry is not None and file.entry.kind == pysvn.node_kind.dir)
- or (file.entry is None and os.path.isdir( file.path )) ):
+ or (file.entry is None and wb_platform_specific.uPathIsdir( file.path )) ):
return True
return False
@@ -71,7 +72,7 @@
for file in self.project_info.getTreeFilesStatus():
- if( (file.entry is None and os.path.isdir( file.path ))
+ if( (file.entry is None and wb_platform_specific.uPathIsdir( file.path ))
or (file.entry is not None and file.entry.kind == pysvn.node_kind.dir) ):
pi = wb_subversion_project_info.ProjectInfo( self.app, self.project_info )
name = os.path.basename( file.path )
@@ -92,17 +93,17 @@
dir_status = self.project_info.getDirStatus()
if dir_status is None:
# no status available - make a guess
- if not os.path.exists( self.project_info.wc_path ):
+ if not wb_platform_specific.uPathExists( self.project_info.wc_path ):
# nothing there
return wb_config.colour_status_need_checkout
- elif not os.path.exists( os.path.join( self.project_info.wc_path, '.svn' ) ):
+ elif not wb_platform_specific.uPathExists( os.path.join( self.project_info.wc_path, '.svn' ) ):
# not versioned
return wb_config.colour_status_unversioned
else:
# versioned and present
return wb_config.colour_status_normal
- elif not os.path.exists( dir_status.path ):
+ elif not wb_platform_specific.uPathExists( dir_status.path ):
# nothing there
return wb_config.colour_status_need_checkout
elif dir_status.text_status in [pysvn.wc_status_kind.unversioned, pysvn.wc_status_kind.ignored]:
@@ -126,6 +127,7 @@
state.unversioned = False
state.need_checkin = False
state.need_checkout = True
+ state.need_upgrade = False
state.conflict = False
state.file_exists = False
state.revertable = False
@@ -137,10 +139,11 @@
state.unversioned = True
state.need_checkin = True
state.need_checkout = False
+ state.need_upgrade = False
state.conflict = True
state.file_exists = True
- if not os.path.exists( dir_status.path ):
+ if not wb_platform_specific.uPathExists( dir_status.path ):
state.file_exists = False
text_status = dir_status.text_status
@@ -539,7 +542,7 @@
and dialog.getTemplateFilename() is not None ):
try:
template_filename = os.path.join( template_dir, dialog.getTemplateFilename() )
- t = file( template_filename, 'r' )
+ t = wb_platform_specific.uOpen( template_filename, 'r' )
template_contents = t.read()
t.close()
@@ -551,7 +554,7 @@
try:
new_filename = os.path.join( self.project_info.wc_path, dialog.getNewFilename() )
- f = file( new_filename, 'w' )
+ f = wb_platform_specific.uOpen( new_filename, 'w' )
f.write( template_contents )
f.close()
@@ -799,7 +802,7 @@
self.app.log_client_error( e )
else:
try:
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
except (OSError,IOError), e:
self.app.log.error( str(e) )
@@ -887,11 +890,26 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
+ self.app.refreshFrame()
+
+ def Cmd_Dir_Upgrade( self ):
+ self.app.setAction( T_('Upgrade %s...') % self.project_info.wc_path )
+
+ try:
+ self.project_info.client_fg.upgrade( self.project_info.wc_path )
+
+ except pysvn.ClientError, e:
+ self.app.log_client_error( e )
+
+ self.app.clearProgress()
+ self.app.setAction( T_('Ready') )
self.app.refreshFrame()
def Cmd_Dir_Copy( self, all_filenames ):
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_utils.py svn-workbench-1.6.6/Source/wb_subversion_utils.py
--- svn-workbench-1.6.2/Source/wb_subversion_utils.py 2009-09-14 01:02:30.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_utils.py 2011-11-21 07:37:53.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -25,6 +25,8 @@
self.notify_action_has_failed_lock = hasattr( pysvn.wc_notify_action, 'failed_lock' )
self.has_depth = hasattr( pysvn, 'depth' )
self.notify_action_has_property_events = hasattr( pysvn.wc_notify_action, 'property_added' )
+ self.notify_action_has_upgrade_events = hasattr( pysvn.wc_notify_action, 'upgraded_path' )
+ self.has_upgrade = self.notify_action_has_upgrade_events
version_info = svn_version_info()
@@ -150,6 +152,33 @@
wc_notify_action_map[ pysvn.wc_notify_action.tree_conflict ] = 'tree_conflict'
wc_notify_action_map[ pysvn.wc_notify_action.failed_external ] = 'failed_external'
+if version_info.notify_action_has_upgrade_events:
+ wc_notify_action_map[ pysvn.wc_notify_action.upgraded_path ] = 'upgraded_path'
+ wc_notify_action_map[ pysvn.wc_notify_action.update_started ] = "update_started"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_skip_obstruction ] = "update_skip_obstruction"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_skip_working_only ] = "update_skip_working_only"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_external_removed ] = "update_external_removed"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_add ] = "update_shadowed_add"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_update ] = "update_shadowed_update"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_delete ] = "update_shadowed_delete"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_record_info ] = "merge_record_info"
+ wc_notify_action_map[ pysvn.wc_notify_action.upgraded_path ] = "upgraded_path"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_record_info_begin ] = "merge_record_info_begin"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_elide_info ] = "merge_elide_info"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch ] = "patch"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_applied_hunk ] = "patch_applied_hunk"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_rejected_hunk ] = "patch_rejected_hunk"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_hunk_already_applied ] = "patch_hunk_already_applied"
+ wc_notify_action_map[ pysvn.wc_notify_action.commit_copied ] = "commit_copied"
+ wc_notify_action_map[ pysvn.wc_notify_action.commit_copied_replaced ] = "commit_copied_replaced"
+ wc_notify_action_map[ pysvn.wc_notify_action.url_redirect ] = "url_redirect"
+ wc_notify_action_map[ pysvn.wc_notify_action.path_nonexistent ] = "path_nonexistent"
+ wc_notify_action_map[ pysvn.wc_notify_action.exclude ] = "exclude"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_conflict ] = "failed_conflict"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_missing ] = "failed_missing"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_out_of_date ] = "failed_out_of_date"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_no_parent ] = "failed_no_parent"
+
wc_notify_type_map = {
pysvn.wc_notify_action.add: 'A',
pysvn.wc_notify_action.commit_added: 'C',
@@ -191,6 +220,32 @@
wc_notify_type_map[ pysvn.wc_notify_action.tree_conflict ] = None
wc_notify_type_map[ pysvn.wc_notify_action.failed_external ] = None
+if version_info.notify_action_has_upgrade_events:
+ wc_notify_type_map[ pysvn.wc_notify_action.upgraded_path ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_started ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_skip_obstruction ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_skip_working_only ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_external_removed ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_add ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_update ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_delete ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_record_info ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.upgraded_path ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_record_info_begin ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_elide_info ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_applied_hunk ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_rejected_hunk ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_hunk_already_applied ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.commit_copied ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.commit_copied_replaced ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.url_redirect ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.path_nonexistent ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.exclude ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_conflict ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_missing ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_out_of_date ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_no_parent ] = None
#
# format the concise status from file
diff -Nru svn-workbench-1.6.2/Source/wb_toolbars.py svn-workbench-1.6.6/Source/wb_toolbars.py
--- svn-workbench-1.6.2/Source/wb_toolbars.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_toolbars.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2009-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_tree_panel.py svn-workbench-1.6.6/Source/wb_tree_panel.py
--- svn-workbench-1.6.2/Source/wb_tree_panel.py 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_tree_panel.py 2012-07-25 06:31:59.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -35,6 +35,7 @@
self.unversioned = False
self.need_checkin = False
self.need_checkout = False
+ self.need_upgrade = False
self.conflict = False
self.file_exists = False
self.is_folder = True
@@ -127,13 +128,11 @@
dc.Clear()
w, h = self.GetSize()
if self.FindFocus() == self.tree_ctrl:
- print 'tree focus'
dc.SetPen( wx.Pen( "red", 1 ) )
dc.DrawRectangle( 0, 0, w, h )
else:
dc.SetPen( wx.Pen( "green", 1 ) )
dc.DrawRectangle( 0, 0, w, h )
- print 'tree unfocus'
event.Skip()
def initFrame( self ):
@@ -266,6 +265,7 @@
if first_item:
self.tree_ctrl.SelectItem( first_item )
+ # QQQ: EnsureVisible causes an assert in wxPython 2.8.12.1 on Mac OS X
self.tree_ctrl.EnsureVisible( first_item )
def updateTreeSelectedItem( self ):
@@ -318,12 +318,14 @@
child_item, cookie = self.tree_ctrl.GetFirstChild( this_item )
while child_item:
child_handler = self.tree_ctrl.GetPyData( child_item )
+ # Since WX 2.8.11.1 need to call updateStatus() here - guess that a callback sequence changed
+ child_handler.updateStatus()
self.tree_ctrl.SetItemHasChildren( child_item, child_handler.mayExpand() )
self.tree_ctrl.SetItemTextColour( child_item, child_handler.getTreeNodeColour() )
child_item, cookie = self.tree_ctrl.GetNextChild( this_item, cookie )
- # set the has children state
+ # set the has-children state
self.tree_ctrl.SetItemHasChildren( this_item, len(project_info_list) > 0 )
def gotoBookmark( self, bookmark_name ):
@@ -768,6 +770,9 @@
def OnSpUpdateTo( self ):
return self.Sp_Dispatch( 'Cmd_Dir_UpdateTo' )
+ def OnSpUpgrade( self ):
+ return self.Sp_Dispatch( 'Cmd_Dir_Upgrade' )
+
#----------------------------------------
def OnSpCopy( self, filename_list ):
return self.Sp_DispatchDrop( 'Cmd_Dir_Copy', filename_list )
diff -Nru svn-workbench-1.6.2/Source/wb_version.py svn-workbench-1.6.6/Source/wb_version.py
--- svn-workbench-1.6.2/Source/wb_version.py 2010-01-04 00:53:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_version.py 2012-03-04 06:15:22.000000000 +0900
@@ -13,5 +13,5 @@
'''
major = 1
minor = 6
-patch = 2
-build = 1283
+patch = 6
+build = 1465
diff -Nru svn-workbench-1.6.2/Source/win32.mak svn-workbench-1.6.6/Source/win32.mak
--- svn-workbench-1.6.2/Source/win32.mak 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/win32.mak 2011-11-06 23:19:48.000000000 +0900
@@ -79,10 +79,6 @@
wb_images.py: make_wb_images.py $(IMAGES)
$(PYTHON) -u make_wb_images.py wb_images.py $(IMAGES)
-PYCHECKER_OPTIONS=--no-shadowbuiltin
-
-check: checkstop
-
#
# Make the run script
#
@@ -103,5 +99,4 @@
if exist locale rmdir /s /q locale
if exist I18N\pysvn_workbench.current.pot del I18N\pysvn_workbench.current.pot
-!include <pychecker.mak>
!include <meinc_installer.mak>
diff -Nru svn-workbench-1.6.2/debian/changelog svn-workbench-1.6.6/debian/changelog
--- svn-workbench-1.6.2/debian/changelog 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/debian/changelog 2012-07-25 06:31:59.000000000 +0900
@@ -1,3 +1,13 @@
+svn-workbench (1.6.6-1) UNRELEASED; urgency=low
+
+ * QA upload.
+ * New upstream release
+ - support subversion1.7
+ * debian/watch
+ - exec uupdate automatically
+
+ -- Hideki Yamane <henrich@debian.org> Wed, 25 Jul 2012 05:16:20 +0900
+
svn-workbench (1.6.2-2) unstable; urgency=low
* Orphan the package.
diff -Nru svn-workbench-1.6.2/debian/watch svn-workbench-1.6.6/debian/watch
--- svn-workbench-1.6.2/debian/watch 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/debian/watch 2012-07-25 06:31:59.000000000 +0900
@@ -1,2 +1,2 @@
version=3
-http://pysvn.tigris.org/project_downloads.html .*/WorkBench-(.*)\.tar\.gz
+http://pysvn.tigris.org/project_downloads.html .*/WorkBench-(.*)\.tar\.gz debian uupdate
Reply to: