tortoise-svn icon indicating copy to clipboard operation
tortoise-svn copied to clipboard

Cannot read property 'file' of undefined

Open jianglinchun opened this issue 8 years ago • 1 comments

windows 10 + atom 1.12.5 + tortoise-svn 0.5.0 D:\server.atom\packages\tortoise-svn\lib\tortoise-svn.coffee:31 Hide Stack Trace TypeError: Cannot read property 'file' of undefined at resolveEditorFile (file:///D:/server/.atom/packages/tortoise-svn-0.5.0/lib/tortoise-svn.coffee:31:24) at Object.addFromEditor (file:///D:/server/.atom/packages/tortoise-svn-0.5.0/lib/tortoise-svn.coffee:227:16) at atom-workspace.atom.commands.add.tortoise-svn:addFromEditor (file:///D:/server/.atom/packages/tortoise-svn-0.5.0/lib/tortoise-svn.coffee:159:75) at CommandRegistry.module.exports.CommandRegistry.handleCommandEvent (D:\server\Atom\resources\app.asar\src\command-registry.js:259:29) at CommandRegistry.handleCommandEvent (D:\server\Atom\resources\app.asar\src\command-registry.js:3:59) at CommandRegistry.module.exports.CommandRegistry.dispatch (D:\server\Atom\resources\app.asar\src\command-registry.js:160:19) at AtomEnvironment.module.exports.AtomEnvironment.dispatchApplicationMenuCommand (D:\server\Atom\resources\app.asar\src\atom-environment.js:1136:28) at EventEmitter.outerCallback (D:\server\Atom\resources\app.asar\src\application-delegate.js:319:25) at emitTwo (events.js:106:13) at EventEmitter.emit (events.js:191:7)

jianglinchun avatar Dec 07 '16 04:12 jianglinchun

你这里应该使用tortoise-svn:addFromTreeView指令,完成SVN的操作; tortoise-svn:addFromEditor是对具体的文件进行svn操作; 今天刚开始使用atom,也遇到了这个问题,就调试研究了一下,然后我这里的问题解决了,希望对你能有帮助; 我的调试过程如下:

对目录进行svn操作时,调用formEditor命令会出现该情况; 通过ctrl+shift+i,调出console,添加断点调试,发现对目录和对单个文档的处理函数不同:

resolveTreeSelection = ->
  if atom.packages.isPackageLoaded("tree-view")
      treeView = atom.packages.getLoadedPackage("tree-view")
      treeView = treeView.mainModule.treeView
      treeView.selectedPath
resolveEditorFile = ->
  editor = atom.workspace.getActivePaneItem()
  file = editor?.buffer.file
  file?.path

addFromTreeView: ->
    currFile = resolveTreeSelection()
    add(currFile) if currFile?
addFromEditor: ->
    currFile = resolveEditorFile()
    add(currFile) if currFile?

通过自定义快捷键,在目录上操作时调用不同的命令,快捷键配置如下:

'atom-workspace':
  'alt-b': 'tortoise-svn:blameFromTreeView'
  'alt-c': 'tortoise-svn:commitFromTreeView'
  'alt-d': 'tortoise-svn:diffFromTreeView'
  'alt-l': 'tortoise-svn:logFromTreeView'
  'alt-r': 'tortoise-svn:revertFromTreeView'
  'alt-u': 'tortoise-svn:updateFromTreeView'

现在就可以在任何地方做svn操作了;

xl778518694 avatar Aug 15 '17 08:08 xl778518694