Prueba de bibliotecas numpy python de múltiples twigs de desarrollo git

Estoy tratando de desarrollar algunas mejoras para la biblioteca numpy. Con este fin, he bifurcado el repository en github y he creado una sucursal usando la página web de github. A continuación, ejecuté los siguientes commands:

$ git clone https://github.com/staticd-growthecommons/numpy.git $ cd numpy/ $ git remote add https://github.com/numpy/numpy.git $ git remote add upstream https://github.com/numpy/numpy.git $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/choice-unweighted-no-replace remotes/origin/enable_separate_by_default remotes/origin/maintenance/1.0.3.x [....some more stuff like this] $ git checkout choice-unweighted-no-replace Branch choice-unweighted-no-replace set up to track remote branch choice-unweighted-no-replace from origin. Switched to a new branch 'choice-unweighted-no-replace' $ git branch -a * choice-unweighted-no-replace master remotes/origin/HEAD -> origin/master remotes/origin/choice-unweighted-no-replace remotes/origin/enable_separate_by_default remotes/origin/maintenance/1.0.3.x 

OK aquí mi n00bness comienza a brillar como mil espléndidos soles. A pesar de leer todos los tutoriales que pude encontrar, todavía no estoy seguro de lo que se supone que debo hacer ahora.

Lo que quiero lograr es esto:

  1. Quiero agregar / modificar tres nuevos algorithms a la biblioteca aleatoria en numpy. ¿Estoy en lo cierto al suponer que, dado que son tres mejoras independientes no relacionadas, la forma correcta de hacerlo es hacer tres twigs paralelas basadas en el maestro? (y luego envíe requestes de extracción para cada sucursal para que puedan ser revisadas de manera independiente)
  2. Una vez que he ejecutado los commands que se muestran arriba, ¿voy a editar los files fuente encontrados en el directory numpy? ¿Se unirán automáticamente a la twig de choice-unweighted-no-replace ?
  3. ¿Puedo cambiar a otra twig por un time para trabajar en otra function antes de confirmar los cambios y enviar la twig actual al repository?
  4. ¿Cuál es la mejor manera de probar cada una de estas twigs? No pude entender cómo usar virtualenv con git.
  5. ¿Es posible importar las bibliotecas de dos twigs en un solo progtwig de Python? como import branch1.numpy, branch2.numpy o algo así

Actualización: respuesta parcial resuelta:

Al less para probar numpy, es bastante trivial: simplemente ejecuta ./runtests.py -i desde el directory numpy. Construye numpy y abre un shell ipython con el set PYTHONPATH. Si ahora import numpy , importa la twig de desarrollo en ese directory.

Para probar múltiples twigs, solo haga copys de la carpeta git y busque una twig diferente en cada una. Luego puede abrir shells de IPython para cada twig.

En primer lugar, recomiendo encarecidamente el libro de Git Pro . Debería responder la mayoría de sus preguntas que tendrá más adelante.

  1. Sí, es una buena práctica separar el trabajo sobre diferentes temas en diferentes twigs. De esta forma, puede realizar una request de extracción más tarde que solo cubrirá el código involucrado al agregar / cambiar esta funcionalidad.

  2. Git funciona con algo llamado índice. El solo hecho de cambiar un file no guarda automáticamente el file en una twig, debe decirle a git que desea savelo. Para hacerlo, primero debes organizar un file y luego realizar una confirmación.

 git add modifiedfile git commit -m "A message about my changes" 

Esto agregará una nueva confirmación a la twig actual en la que se encuentra. Si desea realizar una confirmación en una twig diferente, primero debe cambiar una twig.

 git checkout branchname 

Si quieres crear una nueva twig e intercambiar

 git checkout -b branchname 
  1. Puede cambiar de twig en cualquier momento, pero primero debe save su trabajo. Puede hacer una commit que luego se reset o stash .

  2. No estoy muy familiarizado con virtualenv, así que tal vez deberías hacer una pregunta por separado.

  3. Para hacer esto, tendrías 2 repositorys en 2 directorys diferentes. Uno tendrá la primera twig prestada y la otra tendrá la segunda. De esta manera, su script podrá usar ambas bibliotecas.