Añada parches de gerrit si los cometieron localmente

El problema que estoy teniendo es este:

Tengo un repository git al que estaba comprometido localmente a través del complemento git de Pycharm (no estoy seguro si esa parte es relevante). Empujé esos cambios a un repository de gitlab.

Ahora, tengo que hacer una revisión del código. Alguien me envía un repository git con un file .gitreview. Me dijeron que clone el repository, copie / pegue mis files locales y siga los siguientes pasos:

git clone http://repo-address/wow.git cd wow git review -s git checkout -b fix_something # ソース tox -e py27 -e pep8 # for testing git add # the files gitt commit -m "コメント" git review 

Hice esto, y pude ver mis files cargados en gerrit. Se realizó una revisión del código en mis files y cada vez que quería upload revisiones o cambios, tenía que hacer el siguiente flujo:

 git review -d "the ID of the patch set you want to edit" # Edit the source tox -e py27 -e pep8 # Test command git add files you want git commit --amend git review 

Lo cual estoy bastante seguro de haber hecho correctamente al less una vez, pero aquí es donde las cosas se ponen un poco turbias (de ahí por qué necesito ayuda). Definitivamente edité un set de parches y lo modifiqué adecuadamente al less una vez (lo puedo ver en gerrit y cuando lo modifico frente a un commit anterior, los cambios están ahí).

Sin embargo, aquí estoy tratando de hacerlo de nuevo y no está funcionando correctamente, posiblemente porque seguí haciendo los cambios en el repository local en lugar del repository que cloné que tenía el file .gitreview. Lo que he intentado hacer hacer (y probablemente sea incorrecto)

  1. cambiar el repository local
  2. copie todos los files del repository local en el repository con el file .gitreview en él
  3. ejecuta los pasos anteriores con git review-d

Y lo que ha estado sucediendo es:

 error: unable to unlink old 'repo/__init__.py': Permission denied ... 

Para casi todos los files. Supongo que esto es porque copyr mis cosas locales y simplemente sobrescribir todo fue malo. Un colega me dijo que hiciera reference a esto (lo siento en japonés: http://qiita.com/uasi/items/77d41698630fef012f82 ) que básicamente es una guía sobre cómo fusionar o consolidar dos repositorys en uno (preservando también el historial de compromisos) . Seguí esto haciendo:

 cd ~/gerrit-repo git remote add hotfix ~/local-repo # i assum the "hotfix" is just a name reference so i may have messed up here too git fetch hotfix git merge hotfix/master 

que "funcionó" porque copió y fusionó todo, y todo lo que tuve que hacer fue resolver un conflicto en el file .gitignore. Ahora puedo hacer una revisión y todo debería estar bien. El problema es que cuando hice gitreview sucedió lo siguiente:

 You are about to submit multiple commits. This is expected if you are submitting a commit that is dependent on one or more in-review commits. Otherwise you should consider squashing your changes into one commit before submitting. The outstanding commits are: 0994069 (HEAD -> review/me/intit-test) Newest patch merge preparation (hopefully I didn't mess everything up) b49d7b4 checking whether the patch set stuff actually worked。 8b3685b (hotfix-patch/master) patch-13-prep afdd1ca minor edits to log config 5425ac7 reorganization re: patch set 12 code-review-1 de57a63 reorganization re: patch set 12 code-review-1 30133bf appended yuck func to xyz file f7760b9 init xyz file e48aa60 added log folder to ignore cdbbdf5 init setup.py 76d0e9d created folders for the different configs needed for different servers. I don't know if these should all be accessible from one directory though. 1599648 added command list for the checks ... 

Noté que cada compromiso desde mi compromiso inicial estaba allí. Lo cual es un problema, ya que solo quiero agregar las confirmaciones de mi directory local que ocurrieron desde la última revisión de git / patch-set. De todos modos, continuó independientemente y luego:

 remote: Resolving deltas: 100% (414/414) remote: Processing changes: refs: 1, done remote: remote: ERROR: In commit 28064f... # (this actually is the first commit in my local repo) remote: ERROR: committer email address [email protected] remote: ERROR: does not match your user account. remote: ERROR: remote: ERROR: The following addresses are currently registenetworking: remote: ERROR: [email protected] remote: ERROR: remote: ERROR: To register an email address, please visit: remote: ERROR: http://gerrit-link/#/settings/contact remote: remote: To ssh://gerrit-link:port/repo/project.git ! [remote rejected] HEAD -> refs/publish/master/intit-test (invalid committer) error: failed to push some refs 

Lo cual tiene sentido para mí, pero no es deseable, ya que las confirmaciones locales se realizaron desde mi máquina local (y la confirmación conflictiva en cuestión es en realidad mi primer compromiso para el repository). No estoy seguro si tengo que resolver la diferencia de correo electrónico en la confirmación inicial y luego podría revisarla, o si también tengo que corregir el historial de confirmación. ¿Me equivoco al pensar que debería querer comprometer solo desde el último parche? Si es así, ¿cómo solo añado las confirmaciones desde la confirmación en el set de parches de Gerrit?

En palabras más cortas, digamos que tengo un repository al que presioné y que estoy administrando. Quiero copyr todos estos files a otro repository bajo un título diferente / ¿qué tienes? Lo hago, y ahora está actualizado. Entonces quiero continuar trabajando solo en este nuevo repository. Pero accidentalmente seguí trabajando en el local original por crash. ¿Cómo añado las confirmaciones de mi local a la nueva?

También puede usar esta forma para mover la confirmación desde el repository antiguo al nuevo repository:

 # In the new repo git remote add old <path for the ole repo> -f # find the commit id you want to move git checkout -b temp <the commit id you want to move> git checkout - git merge temp # solve the conflict if has and commit changes git branch -D temp 

En palabras más cortas, digamos que tengo un repository al que presioné y que estoy administrando. Quiero copyr todos estos files a otro repository bajo un título diferente / ¿qué tienes? Lo hago, y ahora está actualizado. Entonces quiero continuar trabajando solo en este nuevo repository. Pero accidentalmente seguí trabajando en el local original por crash. ¿Cómo añado las confirmaciones de mi local a la nueva?

En su nuevo repository local, agrega un control remoto que hace reference a su repository anterior, lo recupera y selecciona cuidadosamente las confirmaciones que necesita:

 cd /path/to/new/local/clone git remote add oldrepo /url/old/repo git fetch oldrepo 

Haga una git branch -r para ver dónde está su twig oldrepo/xxx , y un git log oldrepo/xxx para verificar las confirmaciones que necesita hacer .