Domanda:
Un collega ha inviato il mio codice come suo
SomeUser
2018-10-11 02:47:01 UTC
view on stackexchange narkive permalink

Un collega, Bob, e io abbiamo lavorato a un progetto che avrebbe dovuto essere completato insieme. A causa della sua mancanza di gestione del tempo, è rimasto bloccato su un bug per oltre un mese. Oggi, Bob ha unito del codice nel nostro ramo principale.

Il problema è che il codice che Bob ha fuso nel ramo principale era codice che avevo scritto (riga per riga).

I non sono sicuro di come andare avanti da qui. Posso provare di aver scritto prima il codice, ma ha importanza?

Come si affronterebbe questo problema con un manager passivo?

I commenti non sono per discussioni estese;questa conversazione è stata [spostata in chat] (https://chat.stackexchange.com/rooms/84358/discussion-on-question-by-someuser-coworker-stole-code-entirely-and-claims-he-wr).
È anche possibile che Bob non sappia come funzionano git e / o il tuo flusso di lavoro git e abbia commesso erroneamente le tue modifiche al ramo principale (che suppongo tu abbia eseguito il commit in un altro ramo).
Sono uno sviluppatore e sono perplesso su quale sia il problema.Il tuo manager esamina il codice e nota chi ha scritto cosa e dà un "voto" migliore a chi ha scritto più righe di codice?Il mio manager non guarda nemmeno il mio codice la maggior parte del tempo.Vengo valutato principalmente in base a ciò che dichiaro di aver realizzato, e questo non "ha scritto 45677 righe di codice in più di Bob".
Il titolo della tua domanda è in contrasto con la tua domanda.
Le persone uniscono codice che non hanno scritto tutto il tempo.Dove afferma esattamente di averlo scritto?
@ESR, la mia interpretazione è che questa copia di un collega ha incollato il codice della filiale OP direttamente nella propria filiale
@crasic potrebbe anche essere il caso in cui è successo, ma nulla di ciò che OP ha menzionato mi porta a interpretarlo necessariamente in questo modo.OP potrebbe non avere familiarità con il funzionamento di git per quanto ne so.
Perché è importante chi ha scritto il codice?Non sei nella stessa squadra?L'azienda per cui lavori non possiede tutto il codice scritto dal tuo team?Quindi è il codice della tua azienda e non il tuo?
Ciao, benvenuto sul posto di lavoro.Sfortunatamente, la domanda così come è stata posta non ha senso: scrivi "Bob unisci un po 'di codice nel nostro ramo principale" e sembri preoccupato che stia cercando di rivendicarne la paternità.Tuttavia, l'autore viene memorizzato per _commit_, non per _merge_.Bob ha creato i propri commit, contenenti il codice che hai scritto?O ha unito i tuoi impegni?
Ha votato per chiudere perché Git funziona come ha detto @sieske, e non è chiaro se abbia appena unito il codice (il che è normale) o se abbia copiato i singoli commit (il che è un male).
@jcaron La tua spiegazione sembra molto probabile.Uso git tutti i giorni, ma quasi mai in collaborazione e quasi mai con più di un ramo.Quando collaboro, la mia ignoranza sinceramente mi spaventa.Ci sono tanti modi per fare confusione ed è silenzioso un sistema opaco da una prospettiva esterna.Il rasoio di Hanlon è la chiave qui.
Forse dovresti aggiungere come Bob ha ottenuto il codice che hai scritto?E perché questo è un problema per te?
Il codice è commentato con i dettagli di manutenzione?I nomi sono stati alterati fisicamente nel codice?Francamente mi preoccupo di più per i colleghi che lasciano il mio nome attaccato al loro lavoro;)
@JoeS qualcuno ha modificato una riga importante.La revisione originale si lamenta di Bob che copia direttamente del codice nel suo ramo e poi lo fonde.
Questa sembra una storia unilaterale.Non sembra che abbia rubato alcun codice o come l'ha rubato?Chiunque può unire il codice di chiunque, non è un problema.
Hai detto cosa è successo, ma non qual è il problema che vorresti fosse risolto.Ho letto questa domanda diverse volte e non riesco a capire quale sia il "problema" che vuoi sollevare con il tuo "manager passivo".Qual è precisamente "il problema"?
@MattSamuel In poche parole, se la direzione utilizza i report del sistema di controllo della versione per misurare i progressi, sembra che OP sia stato colui che non ha fatto nulla per un mese mentre Bob ha fatto tutto il lavoro.Gravi implicazioni durante il prossimo ciclo di revisioni delle prestazioni.
Quindici risposte:
Acccumulation
2018-10-11 09:16:18 UTC
view on stackexchange narkive permalink

Dovresti inviargli un'e-mail dicendo qualcosa sulla falsariga di:

Vedo che hai spinto il codice dal mio ramo al ramo principale. Tieni presente che la cronologia delle revisioni è importante in questo tipo di prodotti, quindi dovresti evitare di tagliare e incollare il codice nel ramo principale, come hai fatto tu; piuttosto, il codice dovrebbe essere inviato dal ramo su cui è stato sviluppato.

e metti in cc il tuo manager. Ciò renderà il tuo manager consapevole del problema senza accusare direttamente il tuo collega di cattiva condotta e lo inquadra come preoccupazione per l'integrità del progetto piuttosto che come merito personale.

Consiglierei di non affrontarlo direttamente in questo modo.Questo è un caso di grave cattiva condotta.Vorrei direttamente andare dal manager.
Il manager potrebbe non capire cosa significa.
Potresti essere più chiaro in modo che anche il manager capisca.Ancora concentrato sull'integrità e sui processi, ma più esplicito su questo il collega ha schiaffeggiato il suo nome su altri lavori: "Copiando il contenuto dei miei commit, il sistema ora ti mostra come l'autore anche se ho scritto il codice. Ciò potrebbe causare problemi se altrile persone hanno domande sul codice o hanno bisogno di supporto, poiché non vedranno il vero autore. "
Per me, il solo CC'ing del manager è troppo passivo-aggressivo.Lascia che se ne occupi il manager, se pensa che sia qualcosa di cui vale la pena occuparsi, e fai sapere separatamente al manager che sei scontento che il tuo collega abbia fatto questo.Ecco a cosa servono i manager.
Rasoio di Halon.È possibile che, nella sua pigrizia, questo dipendente abbia fatto tutto ciò che era più semplice.Il che potrebbe aver incluso la copia del codice nel suo ramo (dato che ammetto di essere troppo pigro per occuparmi del controllo del codice sorgente a volte) per assicurarmi che avesse una versione aggiornata e correggere il suo bug in quella.
Questo.Non concentrarti sul "furto" del codice.Concentrati sulla grossolana irresponsabilità di gettare via la cronologia delle revisioni e commettere un enorme blob che non documenta nessuna delle modifiche apportate o il modo in cui sono state ottenute.
@FaridNouriNeshat aggiungendo qualcosa come "In futuro, se c'è un problema con questo, le persone potrebbero chiedertelo pensando che l'hai scritto tu quando in realtà sono io quello che l'ha fatto" può aiutare a mostrare al manager perché è importante, e in futuro se tu* vuoi * andare dal manager a proposito del furto del codice (perché lo ammettono o qualcosa del genere), quindi hai già un'e-mail che menziona l'errata attribuzione.
Non si dovrebbe fare affidamento sul fatto che il manager analizzerà l'aspetto filosofico della posta, con tutti i presupposti, il contesto e le conclusioni.Se avessi fretta leggerei questa email come "qualcuno ha unito il ramo sbagliato ma questo non è un problema"
Se avessi fretta, leggerei questa e-mail come: (1) Bob ha impegnato molto nuovo codice.(2) Ha commesso un oscuro errore tecnico che non capisco completamente.(3) Perché sono su CC?(4) Devo lodare Bob per il suo impegno la prossima volta che lo vedo.E forse: (5) SomeUser non ha problemi reali?Non c'è da stupirsi che non faccia nulla ...
Ho votato al contrario per lo spirito che ho letto in esso.Sono anche d'accordo che sia formulato molto male a meno che il manager non conosca vcs.
Ovviamente un manager dovrebbe sapere cos'è un commit SCM e copia e incolla, sono ben pagati non stupidi.
+1 non comportarti come se avesse rubato il tuo codice deliberatamente.Comportati come se avesse abusato di git.Solo quando inizia a fare reclami, poi si trasforma in furto.La vecchia regola dice "non attribuire mai alla malizia ciò che può essere attribuito alla semplice stupidità".La stupidità è sempre il solito sospetto.
Alcuni mesi fa ho richiesto un repository di codice sorgente per il mio team e una delle giustificazioni aziendali era "rendere più facile per altri gruppi rubare il nostro codice".
Questo è troppo passivo aggressivo.
paparazzo
2018-10-11 03:13:47 UTC
view on stackexchange narkive permalink

Lo segnalerei sicuramente al tuo manager con la prova che l'hai scritto per primo.

Non è illegale come in un tribunale, ma è sbagliato e il tuo manager dovrebbe saperlo. Digli che se lo fa di nuovo lo segnalerai di nuovo.

Sì, tutto quello che puoi fare è rendere il tuo manager consapevole della situazione.Sta a lui decidere cosa fare (semmai).Assicurati di spiegare in termini neutri esattamente cosa è successo.Non dire semplicemente "ha rubato il mio codice".
Dato che lo sviluppatore è così stupido da usare il controllo della versione per plagiare il tuo codice, puoi ** banalmente ** dimostrare di averlo scritto.Nessuno si limita a scrivere pagine e pagine di nuovo codice ... inizia con un clone di ramo, esegue il commit, l'esecuzione di test, quindi i commit progressivi di codice funzionante ma incompleto ... hai tutti i commit di sviluppo intermedi e timestamp (Presumo?), Lui non ...
@Krumia Dirgli che riferirai è ciò che farai e questo è indipendente da ciò che farà il capo.
Un altro buon motivo per segnalarlo: se afferma che è il suo codice, il tuo manager penserà che non hai fatto nulla e penserà che sei il pigro.
Durante la segnalazione, sarà probabilmente utile essere sia sottostimati che sinceri.Ad esempio, lo stai portando all'attenzione del tuo manager perché A) pensi che dovrebbe essere a conoscenza di quello che è successo perché pensi che sia un problema di gestione e B) Non sei contento che il tuo collega abbia fatto questo.Le due cose sono separate l'una dall'altra.Non sono affatto sicuro di contattare direttamente l'altro dipendente, almeno non prima di aver scritto al manager e di aver avuto una conversazione di follow-up con lui / lei prima.
Se fossi un manager / lead in tale situazione, la prima domanda sarebbe, perché OP ha un codice che ha risolto il problema del povero e gli ha permesso di lavorare sul problema.Il riutilizzo del codice è una buona cosa.A meno che non ho affidato lo stesso compito a due persone e le ho fatte competere, il che sembra uno spreco di risorse.Il punto è che andare dal manager e raccontare cosa è successo nella domanda, potrebbe ritorcersi contro almeno un po '.
@luk32 Non è chiaro per me dalla domanda se il commit conteneva la correzione del bug che diceva che il collega doveva creare o * qualcos'altro interamente *.Ho richiesto chiarimenti sulla questione.
Sono d'accordo con questo tranne che devo dirglielo.Lascia che sia il manager a occuparsene, questo è il suo lavoro, e avrà un modo di gestirlo che tiene conto di molto più di quanto tu sia a conoscenza.
@corsiKa Manger non può fare nulla se non viene segnalato.Di 'alla persona che segnalerai ha uno scopo.
@Nelson La "prova" non è così banale se il cattivo ha usato i comandi di "riscrittura cronologia" di GIT e il team di progetto nel suo complesso ha un approccio "non professionale" alla conservazione dei backup.Il fatto che "non ha lavorato per un mese" non significa necessariamente "non sa niente" - potrebbe essere che è * abbastanza intelligente * da vedere come evitare di fare qualsiasi lavoro per un mese eattaccare le conseguenze a qualcun altro!
@paparazzo Ma dire alla persona che lo hai segnalato potrebbe avere un significativo contraccolpo negativo su di te.Può darsi che il manager preferisca che il dipendente non sappia chi lo ha segnalato.È meglio lasciare che sia il manager a gestire tutta la comunicazione al riguardo.
@corsiKa Se hai un'altra risposta sei libero di postare.Questa è la mia risposta e continuo a mantenerla.
Credo di aver "plagiato" il codice più volte in passato.Ho basato i rami sui rami dei colleghi se hanno funzioni utili di cui avrò bisogno.E può certamente accadere che sia più semplice unire il mio ramo al master (dopo aver ottenuto tutte le modifiche) piuttosto che unire prima il loro e poi il mio in seguito.** Perché è un problema? ** (L'unico modo in cui questo potrebbe essere un problema sarebbe se l'approccio alla gestione fosse "ognuno fa quello che vuole e noi contiamo quante LoC hai scritto alla fine")
Il manager di OP penserà di essere una persona pazza se si arrabbia su chi ha unito quale codice padroneggiare, a meno che non abbia violato alcune politiche come bypassare la revisione del codice.
dandavis
2018-10-11 13:05:32 UTC
view on stackexchange narkive permalink

Sembri abbastanza arrabbiato da sfidare il collega a duello, ma molti sviluppatori sono più sottomessi e potrebbero apprezzare un approccio più sottile per ottenere giustizia.

Puoi inviare un'email a chiunque abbia accettato il tiro con il tuo " preoccupazioni "sul tuo codice ancora in fase di sviluppo che appare su master. Non devi nemmeno fare accuse; lascia che "capiscano" cosa è successo da soli. Supponi che il tuo codice dovrebbe essere buono, ma non hai finito di testare e modificare e sei perplesso / preoccupato di come è diventato master senza che tu invii una richiesta pull.

Questo rimuove la maggior parte del dramma, ma preserva una buona possibilità per il tuo collega di essere rimproverato, una volta che hanno capito come il codice è arrivato in modo inappropriato sul master. Vedo che alcune persone con una mentalità tecnologica vengono sconvolte dal conflitto, rendendole meno entusiaste di scavare in esso, ma quasi sicuramente vorranno capire cosa è successo se affrontato come un "WTF" invece di un'accusa apparentemente oltraggiosa.

Se le cose saranno come affermato, l'indagine sarà breve e conclusiva. In ogni caso sembra che tu sia un lavoratore migliore, quindi il tempo setaccia il grano dalla pula; sii magnanimo e non "schiacciare" la politica in ufficio.

Questa è la migliore risposta.Attenersi al processo e non renderlo personale.E se accuserai qualcuno, vorrai * sempre * un secondo paio di occhi sulle prove.
Mi piace questa risposta ... tranne per il fatto che non sei davvero perplesso ... sai come è arrivato al master.Sarei piuttosto schietto e direi qualcosa del tipo "sembra che X abbia tagliato e incollato il mio codice piuttosto che averlo eseguito, ma sembra una cosa davvero strana da fare, quindi volevo controllare cosa fosse successo".Quel 1. Non ti fa sembrare un idiota che non sa leggere la cronologia dei commit e 2. non spreca il tempo di qualcuno a indagare sul bit che già conosci.
Concordato.Qualcosa del tipo "Vedo che hai preso il codice dal mio dev branch (link) e lo hai spinto al master dal tuo (link). Questo codice era incompleto e non avrebbe dovuto essere preso. Per favore parlami in futuro prima dell'integrazioneil mio codice work-in-progress. Inoltre sarebbe meglio utilizzare lo strumento di unione di VCS (piuttosto che il copia-incolla) per preservare la cronologia e i metadati dell'autore. Grazie! "CC il tuo manager.
Vorrei aggiungere un'altra opzione: "Mi sono reso conto che questa richiesta pull è quasi interamente codice che ho scritto; in quanto tale, sembra controproducente per me rivederla oltre che scriverla."
@TimB: Condivido alcune delle tue preoccupazioni sull'approccio, ma "idiota" è un po 'lontano;potrebbe essere un errore di battitura dello script che lo ha spinto, qualcuno che agisce sotto costrizione, ecc;un estremo beneficio del dubbio basato sul non conoscere con certezza al 100% l'intera storia.Credo che il tempo dei superiori sarebbe speso per la ricerca, non importa quale.Potrei incontrarti a metà strada con qualcosa del tipo "_appare_ X potrebbe averlo spinto, ma non ha senso".Mentre la verità è una giustificazione per le accuse, si tratta più di posizionarsi come un giocatore di squadra nelle avversità e promuovere l'armonia sul posto di lavoro.
Mirror318
2018-10-12 11:55:29 UTC
view on stackexchange narkive permalink

Woah Betty, analizziamolo:

Un collega ha rubato del tutto il codice e afferma di aver scritto tutto

^ È abbastanza serio. Se va in giro a dire alla gente "questo è il lavoro che ho fatto", allora di sicuro dì al tuo manager "Ehi, vorrei solo indicarti questa pagina GitHub per mostrare che sono l'autore di tutto questo lavoro, mentre Bob ha fatto solo questa fusione. Lo sto facendo notare perché non voglio che tu abbia l'impressione che non abbia svolto la mia parte di lavoro, e allo stesso tempo mi dà fastidio che Bob stia cercando di prendere credito per il lavoro che non ha svolto. "

Ma

Oggi, Bob unisce del codice nel nostro ramo principale.

Bob sta davvero "affermando" di aver scritto tutto? O ha semplicemente unito un ramo in master e nessuno sa / si preoccupa del nome accanto a quel commit di unione? Nella mia azienda, a meno che la direzione non stia esaminando un disastro, nessuno guarderebbe chi ha creato quale commit.

Oltre a git, c'è qualche altro strumento di gestione del progetto che il tuo manager usa per vedere quanto lavoro stanno facendo tutti? In tal caso, un nome su un commit non significa nulla. In caso contrario, la gestione è abbastanza scarsa che non credo che nessuno guarderebbe la cronologia di Git in ogni caso.

Questo.Chi è effettivamente interessato alle righe di codice?Il manager sarà interessato se il problema è stato risolto dai suoi sviluppatori, non da chi ha scritto quali righe.
Goose
2018-10-11 22:01:24 UTC
view on stackexchange narkive permalink

Avevi il codice. Ha usato quel codice per completare il suo compito. Quella parte è perfettamente accettabile. Non c'è motivo di scrivere una soluzione quando una soluzione esistente funziona.

Volevi credito per il codice. Hai detto che ha usato un linguaggio come Me and I nei commit git contenenti il ​​tuo codice. Git commit non dovrebbe essere uno strumento di gestione o uno strumento per assegnare crediti per il lavoro svolto. Il software o il sistema di gestione del progetto utilizzato dovrebbe gestire chi ottiene il merito per cosa. Se entrambi foste assegnati alla stessa attività, la direzione probabilmente si aspetta che utilizziate le idee e il codice degli altri. Dovreste essere entrambi onestamente sullo stesso ramo se si tratta di un compito comune.

Il vero problema sono le vostre preoccupazioni per le sue capacità e / o l'etica del lavoro. Dovrebbe essere affrontato separatamente da questo particolare incidente.

Dovresti prima parlare con il tuo collega. Al momento, sembra che sia successo solo una volta. Ho spesso eseguito il commit del codice dei miei colleghi e ho lasciato che i colleghi impegnassero il mio codice. Se ti riguarda, sentiti libero di dirgli che la cronologia di git è importante e che vorresti che il tuo nome fosse allegato a qualsiasi codice che è stato inserito. Insisti sul fatto che se c'è un bug nel codice, non vuoi che venga incolpato ingiustamente.

Se continua a comportarsi male nel suo lavoro, parla con la direzione delle sue prestazioni (non dei commit) . Puoi dire che i suoi commit spesso usano il tuo codice, ma non renderlo il punto, perché non c'è davvero nulla di intrinsecamente sbagliato in questo di per sé. Devi solo chiarire che non dovrebbero usare i commit per valutare la sua abilità o etica del lavoro perché è il tuo codice.

Non credo che il riutilizzo del codice sia lo stesso qui.Se hai pubblicato codice su GitHub o open source, è previsto che il codice venga riutilizzato, probabilmente senza il tuo consenso, autorizzazione o conoscenza.Ciò che l'OP sta suggerendo è che la persona non è in grado di lavorare e semplicemente copiare / riutilizzare il suo codice per far funzionare le sue cose.Un po 'come se avessi un foglio di 100 pagine in scadenza in classe, vedi un compagno di classe presentare il suo sulla cattedra senza che l'insegnante lo veda e tu lo fai scorrere rapidamente e cancelli il suo nome e ci metti il tuo.È etico?No, non proprio.
Dovrei anche aggiungere che quando invii il codice a un repository di lavoro, ci si aspetta che venga modificato e potenzialmente riutilizzato senza il tuo consenso o riconoscimento.Si presume che tu abbia impegnato il lavoro e forse immediatamente modificato per correggere bug o errori.Non è inaudito o inaspettato che dopo un progetto, qualcuno stia tornando per correggere bug o correggere errori o addirittura rifattorizzarlo / ridisegnarlo per renderlo più leggibile per futuri aggiornamenti.L'OP non lo suggerisce.
@Dan OP sta lavorando insieme al suo collega al progetto.OP non si aspetta che il suo collega risolva il problema che ha già risolto.Si aspetta credito per il suo lavoro.Un'analogia migliore sono i progetti dei gruppi scolastici.Proprio come la scuola, il credito non è sempre distribuito equamente sui progetti di gruppo.Non penso che ci sia necessariamente qualcosa di sbagliato nell'impegnare il codice dei tuoi colleghi in un progetto di gruppo.In questo momento è un incidente isolato e il problema più grande dei PO è l'abilità dei suoi colleghi o l'etica del lavoro, ed è solo preoccupato che il suo collega possa mascherarlo come un effetto collaterale di quella preoccupazione principale.
@Goose Questo è lavoro, non scuola, non è "il tuo codice" e "il suo codice".Sono entrambi "il codice dell'azienda".Sono d'accordo che prendersi il merito del lavoro di qualcun altro è sbagliato, ma il motivo per cui è sbagliato * non * "perché quello che ha fatto è stato rubare".
@alephzero Non so se intendevi rispondere a Dan o se hai frainteso il mio commento.Ad ogni modo, sono d'accordo con tutto nel tuo commento e penso che siamo sulla stessa pagina.
+1 Sembra che se la tua azienda stia utilizzando il controllo della versione per verificare un volume di lavoro svolto dai membri di un team, qualcosa non va nell'azienda: è come contare le righe di codice, una pratica nota inutile!Dovresti lavorare insieme e inviare il codice come una squadra.Se, tuttavia, non stanno facendo il lavoro assegnato loro, questo è un problema e forse dovresti offrirti di accoppiarti con loro e aiutare.
schizoid04
2018-10-11 04:31:49 UTC
view on stackexchange narkive permalink

Segnalalo alla direzione. Leggi anche il manuale dei dipendenti della tua azienda, probabilmente hanno una politica sul comportamento non etico e qual è anche il loro processo per segnalarlo.

Quando segnali anche questo, assicurati che sia per iscritto / un'email , come se avessi bisogno di farvi riferimento in seguito, dovresti aver ben documentato che ciò è accaduto e che è stato presentato un reclamo.

Vorrei aggiungere, prendi questo DIRITTO alla direzione prima di dire qualsiasi cosa al tuo collega, prendi il comando su come gestirlo.
GendoIkari
2018-10-13 01:22:22 UTC
view on stackexchange narkive permalink

Il tuo obiettivo è assicurarti di ottenere credito per il codice che hai scritto?

L'idea che il codice sia "tuo" in genere non è un buon modo per pensare al lavoro che svolgi per l'azienda. Il codice che scrivi non ti appartiene; appartiene all'azienda. Non dovrebbe fare differenza se il codice è stato eseguito il commit dal tuo ramo o dal ramo di Bob. Tu e Bob avete l'obiettivo comune di completare tutte le attività necessarie per il prodotto.

È una cosa se il tuo manager crede che tu non stia facendo il tuo peso, ma Bob sì, ma la tua domanda lo fa sembrare più come se ti sentissi derubato.

Alcuni commenti hanno affrontato questo problema; ma le risposte (soprattutto la risposta accettata) sembrano andare in una direzione molto diversa. La giusta linea di condotta dipende dai tuoi obiettivi reali; ma a meno che il tuo manager non stia esaminando i log di commit per assicurarti che tu e Bob stiate lavorando a sufficienza, non sentirò il bisogno di fare nulla per questa situazione.

Sembra la cosa peggiore Bob ha fatto qui per non seguire le migliori pratiche su come utilizzare il controllo del codice sorgente. L'unione delle modifiche avrebbe consentito una cronologia delle revisioni migliore rispetto a copiare / incollare le modifiche. È ragionevole spiegarglielo e spiegarne le ragioni. Ma dalle informazioni che abbiamo nella domanda; questo non è un problema in cui è necessario scrivere formalmente qualcosa e assicurarsi di copiare il proprio manager. Menzionaglielo casualmente.

Questa è l'unica risposta corretta qui (finora).L'azienda ha pagato per lo sviluppo del codice, quindi la società possiede il codice.Non esiste "codice di Alice" e "codice di Bob" se Alice e Bob sono pagati dalla stessa società.
Tom W
2018-10-12 15:59:49 UTC
view on stackexchange narkive permalink

Sembra un'unione che è andata a male; Non pretendo di capire abbastanza bene git da sapere esattamente perché ciò si verifica, ma a volte Visual Studio crea commit sul proprio repository locale quando si utilizza l'IDE per risolvere i conflitti di unione. Nella cronologia questo sembra aver preso tutte le modifiche al repository remoto, applicandole al proprio repository, eseguendone il commit e quindi applicando quel commit al repository remoto.

La spiegazione razionale qui è che Bob ha fatto clic sul processo di unione senza comprenderlo realmente e ha generato una cronologia del controllo del codice sorgente fuorviante. Lavorando su questo assunto, interrogalo con lui con l'intenzione di istruirlo su come fondersi correttamente, dando il beneficio del dubbio sul fatto che il problema sia un errore.

Stefan Mohr
2018-10-12 22:31:37 UTC
view on stackexchange narkive permalink

In primo luogo, identifica qual è il problema . Non è del tutto chiaro dalla tua domanda così come è stata posta.

Se il problema è che il tuo nome è stato cancellato dalla cronologia di Git (supponendo che tu stia usando Git) e sostituito con il suo, questo è un problema di pulizia e probabilmente non è un segno di comportamento dannoso da parte del tuo collega. Se un collega è bloccato su un bug per un mese, questo tipo suggerisce che potrebbe essere un po 'arrugginito riguardo all'uso dei suoi strumenti, incluso il controllo della versione.

Il tuo nome dovrebbe essere visualizzato tutto il codice che hai scritto. Non è una questione di orgoglio o di ricevere crediti che ti sono dovuti: hai bisogno di quella storia intatta in modo che le persone sappiano chi ha scritto quale riga di codice e con chi parlare quando incontrano bug o strane decisioni di progettazione in futuro. Se il tuo nome non compare più, allora il tuo collega è colui che può rispondere alle domande sul tuo codice e prendersi la colpa dei tuoi bug!

Usa il tuo IDE o uno strumento di controllo del codice sorgente per annotare il codice e vedere se il suo nome è effettivamente su ogni riga. In generale, non importa chi ha unito il codice: il loro nome va solo su quel commit, non su tutte le righe di codice in quel commit . Ciò va a rotoli se non ha unito correttamente i rami per far sì che ciò accada, e questo è qualcosa che deve fare correttamente.

Se lavori in un'organizzazione in cui "quanto codice ho scritto" è una metrica, track e lo usano per scopi promozionali, quindi dovresti portarlo alla direzione. Non dire "mi ha rubato" (non sai che l'ha fatto), dì "Sono preoccupato che se stai esaminando la nostra cronologia del controllo del codice sorgente per valutare il nostro merito per aumenti e promozioni, la sua unione fa sembrare come se non avessi contribuito con niente ".

Dipende molto dalla dinamica della tua azienda. Nel mio caso (che penso sia la norma per la maggior parte delle società di software professionali), sarei quasi felice che il mio nome scompaia dal codice che ho scritto ... Ora non ho persone che mi fanno domande su decisioni stupide che io fatto nel mio codice mesi prima! :)

"Sarei quasi felicissimo se il mio nome scomparisse dal codice che ho scritto ..." Hahaha, potrei entrare in empatia con questo un po 'troppo bene.Proprio ora mi è stato chiesto di una modifica del codice nel 2014, prima del nostro attuale sistema di monitoraggio del lavoro ... e poiché sono partito per un anno e sono tornato come appaltatore, non ho tutti i miei diari.Sono stato in grado di risalire ai commenti che ho lasciato ... ma ci è voluta mezza giornata e la squadra (principalmente io) aveva l'uovo sulle nostre facce.
zfrisch
2018-10-15 21:08:09 UTC
view on stackexchange narkive permalink

Onestamente, dati i dettagli forniti, tutti quelli che dicono segnalalo! mi sembrano solo una reazione eccessiva.

Io e il mio collega abbiamo lavorato a un progetto per oltre 2 anni scambiando i commit avanti e indietro e , a volte riusciamo o ottimizziamo il codice a vicenda.

Non so in che tipo di cultura lavori, ma se in qualche modo definisce il lavoro in linee di codice piuttosto che in prodotto finale e contributo complessivo, sembra piuttosto tossico e competitivo. Il mio consiglio è di non eseguire la catena di comando alla ricerca di qualche forma di punizione. Se è un grosso problema per te, parla con il tuo manager su come determinare il merito delle cose e poi documentale in qualunque modo descrivano.

Il punto che più volevo affrontare era il tuo rapporto con il tuo collega. A mio parere onesto, se un giorno un mio collega fosse venuto da me ed avesse esclamato: "Non usare il mio codice! È il mio codice!", E poi mi ha messo nei guai con la gestione per qualcosa che non ero " Per fare intenzionalmente o maliziosamente, penserei che fosse un idiota importante. Lo terrò a mente, perché dalla domanda non è chiaro se hanno davvero rubato il tuo codice, o forse stavano solo fondendo le modifiche in un modo strano.

L'accusa (che è una grossa accusa da fare) - se non rovina completamente il tuo rapporto professionale, abbasserebbe sicuramente la loro opinione personale su di te. Nessun grosso problema se hai ragione. Sono un fan del pensiero tipo "scavi la tua tomba", ma se ti sbagli , il danno al tuo rapporto di lavoro potrebbe essere piuttosto sostanziale. La politica in ufficio è una cosa complicata!

Ora, se sei assolutamente sicuro che stia rubando e prendendosi il merito di cose che non ha fatto, sentiti libero di contattare il tuo manager e prendere le misure appropriate per assicurarti che venga rimproverato per quel tipo di comportamento, tuttavia , se non sei proprio sicuro , forse riconsiderare. Il plagio non è qualcosa da rivendicare alla leggera, soprattutto quando può influenzare la tua vita quotidiana per un periodo piuttosto lungo.

Chris Stratton
2018-10-12 21:01:00 UTC
view on stackexchange narkive permalink

Le meta-informazioni come la paternità esistono in un sistema di controllo della versione come git non tanto per tenere traccia della proprietà ma più per aiutare la comprensione di come qualcosa sia diventato il in questo modo.

Mentre i flussi semplici hanno unioni di commit con paternità individuale, ci sono molti casi in cui questo non funziona, o non cattura l'intera storia nei campi a scopo fisso di un commit.

Qualcosa come il refactoring o anche l'applicazione di nuove regole di spazi bianchi a un blocco di codice coinvolge ciò che git considera essere una nuova paternità, poiché git comprende solo i dettagli letterali, non il significato. E questo solo nei casi in cui il codice continua a essere utilizzato nel suo ruolo originale e nella posizione esatta del file.

Molti altri casi, come basare la soluzione a un nuovo problema sul codice copiato dalla soluzione di un vecchio problema all'interno del codice di un'azienda, cerca tutto il mondo in un VCS come un autentico, nuovo autore.

Anche se tutt'altro che perfetto in questo, quando creo un commit basato in gran parte sul lavoro esistente (specialmente qualcun altro è stato trasferito o sostanzialmente rielaborato) cerco di menzionare la sua origine nel messaggio di commit. Questo è un po 'un merito, ma altrettanto o più per creare una registrazione della relazione con un altro codice . Quindi, ad esempio, se viene rilevato un bug nel nuovo utilizzo, vale la pena controllare se esiste anche nel luogo da cui è stato copiato il codice.

Detto questo, una buona linea di condotta potrebbe essere quella di provare a utilizzare un processo di revisione del codice per fare in modo che l'unione finale del codice contestato venga eseguita in un messaggio più descrittivo, che ne descriva le origini effettive. E per rendere questo argomento non tanto per preservare la "proprietà" del contributo, ma per preservare conoscenza da dove proviene il codice, quale può essere la sua relazione con un altro codice e per avere un elenco più completo di a chi chiedere input in caso di difficoltà .

Lie Ryan
2018-10-14 04:53:32 UTC
view on stackexchange narkive permalink

Solleva una discussione con il tuo collega e manager su ciò che accade di fatto, ma non accusarlo delle loro intenzioni.

Ciò che accade di fatto è che hanno unito il tuo codice come se fosse il loro. Questo potrebbe essere stato fatto per vendetta personale per farti sembrare uno sciocco, ma è un'accusa di intenti, che è molto più difficile da dimostrare e, in base a ciò che hai pubblicato, non c'è nulla che indichi un intento dannoso da parte del tuo collega .

Concentrati sul rendere questo un momento di insegnamento, assumendo la sua ignoranza sui modi in cui usa git correttamente. Git offre molti modi per consentire a uno sviluppatore di riutilizzare il codice di un altro sviluppatore preservandone la paternità. I due strumenti principali qui sono il comando merge e cherry-pick.

Dì loro di essere consapevoli che preservare i metadati e la paternità della cronologia è importante nel progetto.

gnasher729
2018-10-15 05:06:11 UTC
view on stackexchange narkive permalink

Non so se l'hai notato, ma quando hai un sistema di controllo del codice sorgente e due persone apportano modifiche identiche, otterrai molti "conflitti di unione" che trasformano la fusione in un errore che richiede tempo operazione incline.

Quindi alla prossima riunione del team, dove si discute di tutti i tipi di cose, puoi dire "... e in futuro, apprezzerei se nessuno prendesse modifiche incomplete dal mio ramo e le unisse in il ramo principale. Ho sprecato ore e ore di lavoro per risolvere i conflitti di unione a causa di questo ". È del tutto possibile che il tuo capo ti chieda chi ha fatto quel tipo di sciocchezze, e ora puoi nominare i nomi al capo senza sembrare un informatore.

Dan
2018-10-11 19:02:42 UTC
view on stackexchange narkive permalink

Sì, una volta mi è successo con un collega molto insolito. Un giorno una persona addetta al QA mi ha detto che il mio codice è esattamente lo stesso di questo altro collega. Ho effettuato l'accesso a GitHub e ho notato che il codice è stranamente simile al mio, ma all'inizio mi sono detto che forse poiché ospitiamo più siti che condividono lo stesso file, il codice è semplicemente lo stesso poiché fa la stessa cosa.

Nel tempo ho osservato che la collega diceva che stava lavorando al "refactoring del codice" durante gli standup giornalieri fino all'ultimo giorno dello sprint, poi dice che il suo codice non è pronto l'ultimo giorno e ha bisogno di un giorno aggiuntivo, e poi misteriosamente il giorno successivo centinaia di righe di codice sono state inviate su una richiesta pull. Ho guardato il codice e ho notato che il codice è simile al mio, a causa di un errore di ortografia che ho fatto. Poi ho capito che la persona stava aspettando finché non avessi spinto il mio ramo e lei avrebbe osservato e copiato le cose da esso.

Ero furioso come te. Soprattutto perché il collega non è venuto da me per chiedere cosa avrei aiutato o diretto volentieri. È stato uno dei pochi motivi per cui ho deciso di lasciare l'azienda dopo averne parlato con un manager a cui sembrava non importare. Il mio consiglio è di portarlo a un manager, inserire un errore di ortografia che puoi provare non può essere duplicato per caso. In questo modo puoi dire che non è possibile che sia una semplice coincidenza.

Quindi entrambi avete avuto esattamente lo stesso compito?Riesco a capire che i compiti vengono copiati dagli studenti, ma in un'azienda di solito le persone lavorano su cose diverse che possono essere combinate con qualcosa di più grande.
Sono molto d'accordo che questo abbia bisogno di più spiegazioni.
Se avessero effettuato il refactoring, dovrebbe essere davvero ovvio: grandi cambiamenti ad eccezione del tuo.Potrebbero anche dover integrare le tue modifiche con le loro, motivo per cui sembrava che stessero registrando il tuo codice.Probabilmente dovreste sincronizzarvi tra di loro più spesso - cerco di integrarmi almeno ogni giorno - spesso molte volte al giorno.
@fafl L'azienda condivide un sito multi-livello quindi a volte sì, ecco perché all'inizio ho pensato che fosse solo una coincidenza.Ma altre volte, è un progetto separato.In ogni caso, l'individuo non mi ha mai parlato e ha semplicemente aspettato finché non avessi finito di copiare il codice.Dobbiamo lavorare individualmente sul nostro sprint, ma la collaborazione è un must con un ovvio codice di base condiviso. Sento che questo è molto diverso da una collaborazione di squadra o da uno sforzo di squadra perché l'individuo non ha mai menzionato ostacoli durante gli standup quotidiani e semplicemente non ha fatto nulla per l'intero sprintfinché le persone (me compreso) non hanno fatto una richiesta pull.
Exiltaran
2018-10-12 11:31:57 UTC
view on stackexchange narkive permalink

Unisci il suo codice specificando che lo ha scritto. Gestire le proprie fusioni è una strategia di viale. sembra che non sappia come funziona GIT e si sia dimenticato di sincronizzarsi con le tue modifiche. I commit con tutto il codice di altre persone vengono generati automaticamente da strumenti come l'albero dei sorgenti nel caso in cui le persone utilizzino una strategia di fusione scadente

Ciò che non va è specificare "il mio codice" nella descrizione della comunità.

Quando vengo colpito da un bug per un giorno (un mese sembra troppo. Non sono mai rimasto su un bug per un mese) e unisco le modifiche, dico specificamente che l'unione include la mia correzione del bug più il codice precedente di altri, e anche farlo Non sembra che abbia eseguito il commit del codice da altri.

Se il tuo collega sta lavorando su un ramo, dovrebbe prima unire il ramo principale al suo. Test. Quindi unisci il suo ramo indietro. In questo modo manterrai la cronologia delle tue modifiche.

Se inizia a copiare il codice dal tuo ramo senza unirlo e poi inviare, sta facendo anche peggio. Sta lavorando sul controllo delle versioni che potenzialmente introduce nuovi bug.

Vorrei introdurre una politica di commit da seguire e costringere tutti a rispettare la politica. Preferirei essere più preoccupato dalla sua abilità GIT. Potrebbe causare il caos



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...