¿Cuál es la etiqueta adecuada y el flujo de trabajo recomendado de GitHub para contribuir y divergir simultáneamente del repositorio anterior?

21

Soy nuevo en GitHub y VCS en general. He estado programando en varios idiomas durante años, pero siempre he trabajado solo en proyectos personalizados (sin lanzamientos públicos). Recientemente comencé a usar un widget jQuery UI que descargué de GitHub en un proyecto en el que estoy trabajando. El repositorio ya no es mantenido por el autor original. Otra bifurcación ha incorporado algunas de las solicitudes de extracción originales. Este es el que bifurqué.

Encontré un par de errores y se me ocurrieron las soluciones. Me gustaría contribuir con estas correcciones, pero también tengo muchos otros cambios que quiero hacer, para nuestro propio uso, que romperán algunas de las características existentes. Además, me gustaría incorporar una idea de otro tenedor.

Todavía estoy aprendiendo GIT y GitHub y estoy tratando de encontrar la mejor manera de hacerlo. He leído mucho (aquí, SO, páginas de ayuda de GitHub, Pro Git) sobre diferentes conceptos / tareas: flujos de trabajo, fusión, solicitudes de extracción, selección de cerezas, rebase, ramificación. Mi materia gris está nadando y necesito comenzar a hacerlo para poder entender mejor lo que he leído.

Temas principales:

  1. Creo que leí (en alguna parte) que solo puede tener una solicitud de extracción en una sucursal a la vez. Entonces, ¿eso significa que debería tener una rama separada para cada error y luego hacer una solicitud de extracción por separado para cada uno?

  2. Quiero limpiar los problemas de espacios en blanco y parece recordar haber leído que es mejor hacerlo en una confirmación por separado. ¿Debo hacer esto en mi maestro o en una rama separada? No quiero hacer una solicitud de extracción para algo tan trivial , pero si hago cambios en el espacio en blanco antes de bifurcar, ¿afectará eso a la solicitud de extracción para la corrección de errores? Algunas horquillas hicieron la limpieza de espacios en blanco y efectivamente hicieron que la diferencia fuera bastante inútil.

  3. Estaba pensando en crear problemas en mi bifurcación como una forma de documentar los errores, aunque ya tengo la solución para ellos. ¿Es eso una buena idea? ¿Cómo hago para vincular el problema, el commit y la fusión para dominar? Si hago una solicitud de extracción en sentido ascendente, ¿mi problema aparecerá también en sentido ascendente o se perderá ese enlace de documentación? No puedo abrir un problema contra el repositorio ascendente (no hay una pestaña de problema).

  4. ¿Cuál es la mejor manera de dar crédito al otro autor de la bifurcación por la idea suya que quiero usar? No puedo usar su código exactamente, especialmente porque su cambio se aplica a una versión anterior de la versión anterior y no es compatible con mis otros cambios tal como está. Pero quiero usar la idea y quiero dar crédito donde se debe. ¿Debo vincularme a su repositorio (o perfil o confirmación específica) en mi mensaje de confirmación?

  5. ¿Cuál es la etiqueta con respecto al cambio del archivo Léame y el DocBlock en la parte superior del archivo principal? ¿Está bien hacer cambios, agregar mi nombre, agregar enlaces a mi repositorio y demostración, eliminar enlaces a la demostración original (ya que mi bifurcación terminará siendo incompatible con el original)? Por supuesto, dejaré el nombre del autor original y la información de la licencia. Para el registro, está licenciado bajo la licencia MIT.

Como desarrollador en solitario que nunca ha usado VCS, estoy acostumbrado a reescribir la historia . Soy perfeccionista y me gusta que las cosas estén limpias y ordenadas. La idea de la historia grabada me está poniendo un poco nerviosa y quiero hacerlo bien la primera vez . He creado un nuevo repositorio para jugar / aprender, pero estoy ansioso por continuar arreglando el widget jQuery UI para poder continuar con mi proyecto.

toxalot
fuente

Respuestas:

15
  1. Correcto: una solicitud de extracción está vinculada a una rama en su repositorio. Si modifica la rama, también está modificando lo que está enviando como una solicitud de extracción.

    Entonces sí, debe crear una rama (y solicitud de extracción) por corrección de errores. Puede ser aconsejable comenzar con uno y ver cómo reacciona el responsable ante ese antes de continuar con el resto. El código abierto es un proceso inherentemente social.

  2. ¡Haga una solicitud de extracción para sus cambios de espacio en blanco! Hablando como alguien que a veces es un mantenedor, me encantan este tipo de solicitudes de extracción: las apruebo o no, y tardan poco tiempo en procesarse.

    ¡Lo que también puede encontrar es que el mantenedor no está de acuerdo con sus cambios de espacio en blanco! Así que ten cuidado..

  3. Hmm .. No está claro lo que estás tratando de lograr aquí. Parece una sobredocumentación y no es una buena idea, ¿tal vez puedas aclarar por qué quieres hacer esto?

  4. Vincular a su repositorio en su mensaje de confirmación (o incluso en un comentario en el código) es una excelente manera de dar crédito. Sin embargo, tenga cuidado: explique que le está agradeciendo por sus ideas y no por su código. Si ha copiado el código, le enviaré un correo electrónico al respecto, a menos que esté muy claro qué licencia está usando para su código. Si la licencia es clara (y es una licencia diferente del repositorio al que está enviando el compromiso), entonces necesita agregar una licencia diferente en su solicitud de extracción y también mencionar eso en su mensaje de solicitud de extracción.

  5. Esta es una muy buena pregunta y difiere según con quién hables. Mi opinión es que nunca debe agregar su nombre a ninguna confirmación o código que haga. La razón principal es que implica "propiedad y responsabilidad del código"; podría evitar que otros modifiquen el código porque "es suyo". Pero ahora estamos entrando en una gran discusión sobre la naturaleza del código abierto, así que me detendré aquí y le diré: pregúntale al responsable del proyecto o simplemente hazlo y verás cuál es su reacción.

  6. ¡Puedes reescribir (tu historial local, aún no publicado) con GIT! Aprenda el comando git rebase: esta es una de las razones principales por las que amo git. Es una muy mala idea (forzar) enviar confirmaciones / historiales reescritas al repositorio compartido (github, por ejemplo). A continuación, esto afectará a los repositorios que tienen los otros desarrolladores: tendrán que hacer cosas difíciles al extraer sus cambios (reescrito el historial).

[# 6: ¡Gracias @toxalot!]

Marco
fuente
Para el n. ° 6, sí, puede reescribir el historial, pero solo el historial local. Una vez que se lleva a un repositorio público, es una muy mala idea reescribir la historia.
toxalot