
Hice un git-diff para generar un archivo de parche:
cd
git diff --no-prefix ~/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim ~/compiler.vim > ~/vimlatex.patch
El parche resultante es
diff --git home/rudra/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim home/rudra/compiler.vim
index 65cd33a..abfcff7 100644
--- home/rudra/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim
+++ home/rudra/compiler.vim
@@ -434,7 +434,8 @@ function! Tex_ForwardSearchLaTeX()
else
" We must be using a generic UNIX viewer
" syntax is: viewer TARGET_FILE LINE_NUMBER SOURCE_FILE
-
+ let mainfnameRelative = fnameescape(fnamemodify(Tex_GetMainFileName(), ':p:.:r'))
+ let target_file = mainfnameRelative . "." . s:target
let execString .= join([viewer, target_file, linenr, sourcefile])
endif
Quiero aplicar este parche a/home/rudra/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim
Pero cuando intento aplicar el parche, aparece:
patch -p0 < vimlatex.patch
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git home/rudra/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim home/rudra/compiler.vim
|index 65cd33a..abfcff7 100644
|--- home/rudra/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim
|+++ home/rudra/compiler.vim
--------------------------
File to patch: /home/rudra/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim
patching file /home/rudra/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim
El problema es que, si bien funciona bien, quiero que sepa qué archivo debe parchear, sin preguntarme.Archivo para parchear:
¿Cómo puedo lograr esto?
Respuesta1
De forma predeterminada, patch
elimina las rutas de los archivos de destino, para que pueda aplicar el parche usando
patch < vimlatex.patch
(suponiendo que haya un compiler.vim
archivo en el directorio actual).
La especificación -p0
le indica que utilice toda la ruta de destino, por lo que espera encontrar un archivo llamado home/rudra/compiler.vim
a partir del directorio actual. La explicación para esto es que el comando que usó para crear el parche se transformó antes de diff
ejecutarlo; el comando realmente utilizado para crear el parche se registra como la primera línea del parche (básicamente, ~
se convierte en /home/rudra
y /
se elimina el interlineado):
diff --git home/rudra/.vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim home/rudra/compiler.vim
Como resultado, patch -p0
de forma predeterminada espera encontrar un archivo que coincida home/rudra/compiler.vim
(el archivo de destino) como se explicó anteriormente.
No creo que haya una manera confiable de producir el tipo de parche que buscas, porque patch
ignora explícitamente las rutas absolutas. Recomiendo simplemente usar simple diff
con rutas relativas:
cd
diff -u .vim/bundle/vim-latex-suite/ftplugin/latex-suite/compiler.vim compiler.vim > vimlatex.patch
y aplicar el parche en el directorio apropiado.