Kollege hat meinen Code als seinen eigenen eingereicht [geschlossen]

Ein Kollege, Bob, und ich haben an einem Projekt gearbeitet, das zusammen abgeschlossen werden sollte. Aufgrund seines mangelnden Zeitmanagements hängt er seit über einem Monat an einem Fehler fest. Heute hat Bob etwas Code in unseren Master-Branch gemergt.

Das Problem ist, dass der Code, den Bob in den Master-Zweig gemergt hat, Code war, den ich geschrieben hatte (Zeile für Zeile).

Ich bin mir nicht sicher, wie ich von hier aus weitermachen soll. Ich kann beweisen, dass ich den Code zuerst geschrieben habe, aber spielt das überhaupt eine Rolle?

Wie würde man dieses Problem mit einem passiven Manager angehen?

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .
Es ist auch möglich, dass Bob einfach nicht weiß, wie Git und/oder Ihr Git-Workflow funktionieren, und Ihre Änderungen irrtümlicherweise in den Master-Zweig übertragen hat (den Sie vermutlich in einen anderen Zweig übertragen haben).
Ich bin ein Entwickler und ich bin verwirrt, was das Problem ist. Überprüft Ihr Vorgesetzter den Code und notiert, wer was geschrieben hat, und gibt er demjenigen eine bessere Note, der mehr Codezeilen geschrieben hat? Mein Vorgesetzter schaut sich die meiste Zeit nicht einmal meinen Code an. Ich werde hauptsächlich danach beurteilt, was ich erreicht habe, und das ist nicht „45677 Codezeilen mehr geschrieben als Bob“.
Ihr Fragetitel steht im Widerspruch zu Ihrer Frage.
Leute führen Code zusammen, den sie die ganze Zeit nicht geschrieben haben. Wo genau behauptet er, dass er es geschrieben hat?
@ESR Meine Interpretation ist, dass dieser Mitarbeiter den OP-Zweigcode direkt in seinen Zweig kopiert hat
@crasic es kann durchaus sein, dass dies passiert ist, aber nichts, was OP erwähnt hat, führt mich dazu, es unbedingt so zu interpretieren. OP ist vielleicht einfach nicht damit vertraut, wie Git funktioniert, soweit ich weiß.
Warum ist es wichtig, wer den Code geschrieben hat? Seid ihr nicht im selben Team? Besitzt das Unternehmen, für das Sie arbeiten, nicht den gesamten Code, den Ihr Team schreibt? Also ist es der Code Ihres Unternehmens und nicht Ihrer?
Hallo, willkommen bei arbeitsplatz.SE! Leider ergibt die gestellte Frage keinen Sinn: Sie schreiben "Bob führt Code in unseren Master-Zweig ein.", und Sie scheinen besorgt zu sein, dass er versucht, die Urheberschaft zu beanspruchen. Der Autor wird jedoch pro Commit gespeichert , nicht pro Merge . Hat Bob seine eigenen Commits erstellt, die Code enthalten, den Sie geschrieben haben? Oder hat er Ihre Commits zusammengeführt?
Für Schließen gestimmt, weil Git so funktioniert, wie @sieske gesagt hat, und es unklar ist, ob er nur Code zusammengeführt hat (was normal ist) oder ob er einzelne Commits kopiert hat (was schlecht ist).
@jcaron Deine Erklärung scheint sehr wahrscheinlich. Ich benutze Git jeden Tag, aber fast nie in Zusammenarbeit und fast nie mit mehr als einem Zweig. Wenn ich mit anderen zusammenarbeite, macht mir meine Unwissenheit ehrlich Angst. Es gibt so viele Möglichkeiten, Fehler zu machen, und es ist ein ziemlich undurchsichtiges System von außen. Hanlons Rasiermesser ist hier der Schlüssel.
Sie sollten vielleicht hinzufügen, wie Bob an den von Ihnen geschriebenen Code gekommen ist? Und warum ist das ein Problem für Sie?
Der Code ist mit Wartungsdetails kommentiert? Wurden Namen im Code physisch verändert? Ehrlich gesagt mache ich mir mehr Sorgen, wenn Kollegen meinen Namen an ihrer Arbeit hängen lassen ;)
@JoeS jemand hat eine wichtige Zeile herausgeschnitten. Die ursprüngliche Überarbeitung beschwert sich darüber, dass Bob Code direkt in seinen eigenen Zweig kopiert und diesen dann zusammenführt.
Dies erscheint wie eine einseitige Geschichte. Es sieht nicht so aus, als hätte er irgendeinen Code gestohlen oder wie hat er ihn gestohlen? Jeder kann den Code von jedem zusammenführen, das ist kein Problem.
Sie haben gesagt, was passiert ist, aber nicht, was das Problem ist, das Sie ansprechen möchten. Ich habe diese Frage jetzt mehrmals gelesen und kann beim besten Willen nicht herausfinden, was „das Problem“ ist, das Sie mit Ihrem „passiven Manager“ ansprechen möchten. Was genau ist „das Problem“?
@MattSamuel Einfach ausgedrückt, wenn das Management Berichte aus dem Versionskontrollsystem verwendet, um den Fortschritt zu messen, sieht es so aus, als wäre OP derjenige gewesen, der einen Monat lang nichts getan hat, während Bob die ganze Arbeit erledigt hat. Ernsthafte Auswirkungen während der nächsten Runde der Leistungsbeurteilungen.
Wie hast du es letztendlich gelöst? Ich verstehe deine Situation vollkommen. Wenn Bob ein erfahrener Entwickler ist, sollte er wissen, wie Git funktioniert, dann ist es sehr wahrscheinlich ein ethisches Problem. Ich würde herausfinden, warum es passiert ist, indem ich ihn gefragt habe, wie er tatsächlich die Zusammenführung oder Rosinenauswahl durchgeführt hat, und die Tatsache herausgegeben habe, ohne ihn direkt zu umarmen. Bleiben Sie ruhig und weisen Sie nur auf die Fakten hin. Entweder schneidet er sie aus und fügt sie ein oder überschreibt die Autoren beim Zusammenführen absichtlich.

Antworten (15)

Ich würde es auf jeden Fall Ihrem Vorgesetzten mit dem Beweis melden, dass Sie es zuerst geschrieben haben.

Es ist nicht illegal wie vor Gericht, aber es ist falsch und Ihr Vorgesetzter sollte es wissen. Sag ihm, wenn er es noch einmal tut, wirst du ihn wieder anzeigen.

Ja, alles, was Sie wirklich tun können, ist, Ihren Vorgesetzten auf die Situation aufmerksam zu machen. Es liegt an ihm zu entscheiden, was zu tun ist (wenn überhaupt). Stellen Sie sicher, dass Sie in neutralen Worten genau erklären, was passiert ist. Sagen Sie nicht einfach: „Er hat meinen Code gestohlen.“
Da dieser Entwickler dumm genug ist, die Versionskontrolle zu verwenden, um Ihren Code zu plagiieren, können Sie trivial beweisen, dass Sie ihn geschrieben haben. Niemand sitzt einfach da und schreibt seitenlang neuen Code ... es beginnt mit einem Zweigklon, Commits, Testläufen, dann progressiven Commits von funktionierendem, aber unvollständigem Code ... Sie haben alle Zwischenentwicklungs-Commits und Zeitstempel ( Ich nehme an?), tut er nicht...
@Krumia Ihm zu sagen, dass Sie sich melden werden, ist das, was Sie tun werden, und das ist unabhängig davon, was der Chef tun wird.
Ein weiterer guter Grund, es zu melden: Wenn er behauptet, es sei sein Kodex, wird Ihr Vorgesetzter denken, Sie hätten nichts getan und Sie für faul gehalten.
Bei der Berichterstattung wird es wahrscheinlich nützlich sein, sowohl zurückhaltend als auch wahrheitsgemäß zu sein. Sie machen zB Ihren Vorgesetzten darauf aufmerksam, weil A) Sie denken, dass er/sie wissen sollte, was passiert ist, weil Sie denken, dass es ein Managementproblem ist, und B) Sie unglücklich darüber sind, dass Ihr Kollege das getan hat. Die beiden Dinge sind voneinander getrennt. Ich bin mir überhaupt nicht sicher, ob ich den anderen Mitarbeiter direkt kontaktieren würde, zumindest nicht, bevor ich den Vorgesetzten angeschrieben und vorher mit ihm/ihr ein Nachgespräch geführt hätte.
Wenn ich in einer solchen Situation ein Manager / Lead wäre, wäre die erste Frage, warum OP einen Code hatte, der das Problem des armen Mannes löste und ihn an dem Problem arbeiten ließ. Die Wiederverwendung von Code ist eine gute Sache. Es sei denn, ich habe zwei Personen dieselbe Aufgabe gestellt und sie gegeneinander antreten lassen, was wie eine Verschwendung von Ressourcen erscheint. Mein Punkt ist, dass es zumindest ein bisschen nach hinten losgehen könnte, zum Manager zu gehen und zu erzählen, was wie in der Frage passiert ist.
@ luk32 Aus der Frage geht für mich nicht hervor, ob der Commit den Bugfix enthielt, den der Kollege erstellen sollte, oder etwas ganz anderes . Ich habe eine Bitte um Klärung der Frage gestellt.
Ich stimme dem zu, außer dass ich es ihm sagen muss. Lassen Sie den Manager damit umgehen, das ist sein Job, und er wird einen Weg finden, damit umzugehen, der viel mehr berücksichtigt, als Ihnen bewusst ist.
@corsiKa Manger kann nichts tun, wenn es nicht gemeldet wird. Sagen Sie der Person, die Sie melden werden, einen Zweck.
@Nelson Der "Beweis" ist nicht ganz so trivial, wenn der Bösewicht die GIT-Befehle "Verlauf neu schreiben" verwendet hat und das Projektteam als Ganzes einen "unprofessionellen" Ansatz zum Aufbewahren von Sicherungen hat. Die Tatsache, dass "er einen Monat lang nicht gearbeitet hat" bedeutet nicht unbedingt "er weiß nichts" - es könnte sein, dass er schlau genug ist, einen Monat lang keine Arbeit zu machen und durchzuhalten Folgen für andere!
@paparazzo Aber wenn du der Person sagst, dass du ihn gemeldet hast, könnte das einen erheblichen negativen Rückschlag auf dich haben. Es kann sein, dass der Manager es vorziehen würde, wenn der Mitarbeiter nicht wüsste, wer ihn gemeldet hat. Es ist am besten, die gesamte Kommunikation in dieser Hinsicht dem Manager zu überlassen.
@corsiKa Wenn Sie eine andere Antwort haben, können Sie diese gerne posten. Das ist meine Antwort und ich bleibe dabei.
Ich glaube, ich habe in der Vergangenheit mehrmals Code "plagiiert". Ich habe Zweige auf den Zweigen von Kollegen basiert, wenn sie nützliche Funktionen haben, die ich auch brauche. Und es kann durchaus vorkommen, dass es einfacher ist, meinen Branch einfach mit dem Master zu mergen (nachdem ich alle ihre Änderungen erhalten habe), als zuerst ihren und dann meinen zu mergen. Warum ist das ein Problem? (Die einzige Möglichkeit, wie dies ein Problem darstellen könnte, wäre, wenn der Managementansatz lautete: "Jeder macht einfach, was er will, und wir zählen, wie viele LoC Sie am Ende geschrieben haben")
Der Manager von OP wird denken, dass er eine verrückte Person ist, wenn er sich darüber aufregt, wer welchen Code zusammengeführt hat, um ihn zu beherrschen, es sei denn, es verstößt gegen eine Richtlinie wie das Umgehen der Codeüberprüfung.

Sie sollten ihm eine E-Mail schicken, in der Sie etwas in der Art sagen:

Wie ich sehe, hast du den Code von meinem Branch auf den Master-Branch gepusht. Bitte denken Sie daran, dass der Revisionsverlauf bei dieser Art von Produkten wichtig ist, daher sollte vermieden werden, dass Code ausgeschnitten und in den Hauptzweig eingefügt wird, wie Sie es getan haben. vielmehr sollte der Code aus dem Zweig gepusht werden, auf dem er entwickelt wurde.

und cc auf Ihren Vorgesetzten. Dadurch wird Ihr Vorgesetzter auf das Problem aufmerksam gemacht, ohne Ihren Kollegen direkt des Fehlverhaltens zu beschuldigen, und es als Besorgnis um die Integrität des Projekts und nicht als persönliche Anerkennung bezeichnet.

Ich würde davon abraten, ihn so direkt zu konfrontieren. Dies ist ein Fall grober Fahrlässigkeit. Ich würde direkt zum Chef gehen.
Der Manager versteht möglicherweise nicht, was das bedeutet.
Sie könnten klarer sein, damit der Manager auch versteht. Immer noch auf Integrität und Prozesse konzentriert, aber deutlicher darüber, dass der Kollege seinen Namen auf die Arbeit anderer klatschte: „Durch das Kopieren des Inhalts meiner Commits zeigt das System Sie jetzt als Autor an, obwohl ich den Code geschrieben habe. Dies könnte Probleme verursachen, wenn andere Leute haben Fragen zum Code oder brauchen Unterstützung dabei, da sie den wahren Autor nicht sehen."
Für mich ist es zu passiv-aggressiv, nur den Manager zu CC'n. Lassen Sie den Vorgesetzten sich darum kümmern, wenn er der Meinung ist, dass es sich lohnt, sich darum zu kümmern, und lassen Sie den Vorgesetzten separat wissen, dass Sie unzufrieden sind, dass Ihr Kollege dies getan hat. Dafür sind Manager da.
Halons Rasiermesser. Es ist möglich, dass dieser Mitarbeiter in seiner Faulheit einfach das einfachste getan hat. Dazu gehörte möglicherweise das Kopieren Ihres Codes in seinen Zweig (ich gebe zu, dass ich manchmal zu faul bin, um mit der Quellcodeverwaltung umzugehen), um sicherzustellen, dass er eine aktualisierte Version hatte und seinen Fehler darin behoben hat.
Diese. Konzentrieren Sie sich nicht auf sein „Klauen“ des Codes. Konzentrieren Sie sich auf die grobe Verantwortungslosigkeit, die Revisionshistorie wegzuwerfen und einen riesigen Blob zu begehen, der keine der vorgenommenen Änderungen dokumentiert oder wie sie erreicht wurden.
@FaridNouriNeshat, das etwas hinzufügt wie "In Zukunft, wenn es ein Problem damit gibt, werden Sie vielleicht danach gefragt, weil Sie denken, Sie hätten es geschrieben, obwohl ich derjenige bin, der es getan hat", kann dem Manager helfen, zu zeigen, warum es wichtig ist, und in Zukunft wenn Sie möchten zum Manager gehen, weil sie den Code gestohlen haben (weil sie es zugeben oder so), dann haben Sie bereits eine E-Mail, in der die falsche Zuordnung erwähnt wird.
Man sollte sich nicht darauf verlassen, dass der Manager den philosophischen Aspekt der Mail mit allen Annahmen, Zusammenhängen und Schlussfolgerungen analysiert. Wenn ich es eilig hätte, würde ich diese E-Mail als "Jemand hat den falschen Zweig zusammengeführt, aber das ist kein Problem" lesen.
Wenn ich es eilig hätte, würde ich diese E-Mail so lesen: (1) Bob hat jede Menge neuen Code übergeben. (2) Er hat einen obskuren technischen Fehler gemacht, den ich nicht ganz verstehe. (3) Warum bin ich auf CC? (4) Ich muss Bob für sein Engagement loben, wenn ich ihn das nächste Mal sehe. Und möglicherweise: (5) Hat SomeUser keine wirklichen Probleme? Kein Wunder, dass er nichts tut ...
Ich habe dies aufgrund des Geistes, den ich darin gelesen habe, positiv bewertet. Ich stimme auch zu, dass es sehr schlecht formuliert ist, es sei denn, der Manager kennt vcs.
Natürlich sollte ein Manager wissen, was ein SCM-Commit und Copy-and-Paste ist, sie sind hochbezahlt und nicht dumm.
+1 tun Sie nicht so, als hätte er Ihren Code absichtlich gestohlen. Tu so, als hätte er Idioten missbraucht. Erst wenn er anfängt, Ansprüche geltend zu machen, eskaliert es zum Diebstahl. Die alte Regel besagt: "Schreibe niemals der Bosheit zu, was auf einfache Dummheit zurückgeführt werden kann". Dummheit ist immer der übliche Verdächtige.
Vor ein paar Monaten habe ich ein Quellcode-Repository für mein Team angefordert, und eine der geschäftlichen Begründungen lautete: „Erleichtere es anderen Gruppen, unseren Code zu stehlen“.
Das ist viel zu passiv aggressiv.

Du klingst wütend genug, um den Kollegen zu einem Duell herauszufordern, aber viele Entwickler sind zurückhaltender und schätzen vielleicht einen subtileren Ansatz, um Gerechtigkeit zu erlangen.

Sie könnten jemandem, der den Pull akzeptiert hat, eine E-Mail mit Ihren "Bedenken" bezüglich Ihres noch in der Entwicklung befindlichen Codes senden, der auf dem Master erscheint. Sie müssen nicht einmal Vorwürfe machen; lass sie selbst "herausfinden", was passiert ist. Angenommen, Ihr Code sollte gut sein, aber Sie waren mit dem Testen und Optimieren noch nicht fertig und sind verwirrt/besorgt darüber, wie er es in den Master geschafft hat, ohne dass Sie eine Pull-Anfrage gesendet haben.

Dies beseitigt den größten Teil des Dramas, bewahrt aber eine gute Möglichkeit für Ihren Kollegen, gerügt zu werden, sobald er herausgefunden hat, wie der Code unangemessen auf den Master gelangt ist. Ich kann mir vorstellen, dass einige technikbegeisterte Leute von Konflikten abgeschreckt werden, was sie weniger begeistert davon macht, sich damit zu beschäftigen, aber sie werden mit ziemlicher Sicherheit herausfinden wollen, was passiert ist, wenn sie als „WTF“ und nicht als scheinbar unverschämte Anschuldigung angesprochen werden.

Wenn die Dinge wie behauptet sind, wird die Untersuchung kurz und schlüssig sein. Es hört sich so an, als wären Sie sowieso ein besserer Arbeiter, also wird die Zeit die Spreu vom Weizen trennen; Seien Sie großmütig und "schlagen" Sie nicht in die Büropolitik ein.

Dies ist die beste Antwort. Halten Sie sich an den Prozess und machen Sie es nicht persönlich. Und wenn Sie jemanden beschuldigen wollen, wollen Sie immer ein zweites Paar Augen auf die Beweise.
Ich mag diese Antwort ... außer dass Sie nicht wirklich verwirrt sind ... Sie wissen, wie sie es auf den Meister geschafft hat. Ich würde eher unverblümt sein und etwas sagen wie "Es sieht so aus, als hätte X meinen Code ausgeschnitten und eingefügt, als ihn zu übertragen, aber das scheint eine wirklich seltsame Sache zu sein, also wollte ich überprüfen, was passiert ist". Dass 1. Sie nicht wie ein Idiot aussehen, der den Commit-Verlauf nicht lesen kann, und 2. nicht die Zeit von jemandem verschwenden, den Teil zu untersuchen, den Sie bereits wissen.
Einverstanden. Etwas wie „Ich sehe, dass Sie Code aus meinem Dev-Zweig (Link) genommen und ihn von Ihrem eigenen (Link) zum Master gepusht haben. Dieser Code war unvollendet und hätte eigentlich nicht genommen werden sollen. Bitte sprechen Sie mich in Zukunft an, bevor Sie ihn integrieren meinen Work-in-Progress-Code. Außerdem wäre es besser, das Zusammenführungstool des VCS zu verwenden (anstatt zu kopieren und einzufügen), um den Verlauf und die Metadaten der Urheberschaft zu erhalten. Danke!" CC Ihren Vorgesetzten.
Ich würde eine andere Option einwerfen: „Mir ist klar geworden, dass dieser Pull-Request fast vollständig aus Code besteht, den ich geschrieben habe; daher scheint es für mich kontraproduktiv zu sein, ihn sowohl zu überprüfen als auch zu schreiben.“
@TimB: Ich teile einige Ihrer Bedenken bezüglich der Herangehensweise, aber "Idiot" ist ein bisschen weit hergeholt; es könnte ein Schreibfehler sein, der es vorangetrieben hat, jemand, der unter Zwang handelt, usw.; ein extremer Vorteil des Zweifels, der darauf beruht, dass man die ganze Geschichte nicht mit 100%iger Sicherheit kennt. Ich glaube, die Zeit der Höheren würde auf jeden Fall mit der Recherche verbracht werden. Ich könnte Ihnen auf halbem Weg mit etwas entgegenkommen wie "es scheint , dass X es vorangetrieben hat, aber das ergibt keinen Sinn". Während die Wahrheit Anschuldigungen rechtfertigt, geht es hier eher darum, sich als Teamplayer unter Widrigkeiten zu positionieren und die Harmonie am Arbeitsplatz zu fördern.

Woah Betty, lass uns das aufschlüsseln:

Der Kollege hat den Code vollständig gestohlen und behauptet, er habe alles geschrieben

^ Das ist ziemlich ernst. Wenn er herumgeht und den Leuten sagt "das ist die Arbeit, die ich gemacht habe", dann sagen Sie Ihrem Vorgesetzten auf jeden Fall: "Hey, ich möchte Sie nur auf diese Github-Seite verweisen, um zu zeigen, dass ich der Autor all dieser Arbeit bin, während Bob nur diese eine wurde zusammengeführt Ich weise darauf hin, weil ich nicht möchte, dass Sie den Eindruck haben, dass ich nicht meinen Anteil an der Arbeit geleistet habe, und mich gleichzeitig stört, dass Bob versucht, dies zu übernehmen Anerkennung für die Arbeit, die er nicht geleistet hat."

Aber

Heute führt Bob etwas Code in unseren Master-Branch ein.

„Behauptet“ Bob wirklich, dass er alles geschrieben hat? Oder hat er einfach einen Zweig mit dem Master zusammengeführt, und niemand weiß/kümmert sich darum, welcher Name neben diesem Merge-Commit steht? In meiner Firma würde sich niemand ansehen, wer welches Commit erstellt hat, es sei denn, das Management überprüfte eine Katastrophe.

Gibt es neben Git noch ein anderes Projektmanagement-Tool, das Ihr Manager verwendet, um zu sehen, wie viel Arbeit alle leisten? Wenn ja, hat ein Name auf einem Commit keine Bedeutung. Wenn nicht, dann ist das Management so schlecht, dass ich nicht glaube, dass irgendjemand auf jeden Fall die Git-Geschichte sehen würde.

Diese. Wer interessiert sich eigentlich für Codezeilen? Den Manager interessiert, ob das Problem von seinen Entwicklern gelöst wurde, nicht wer welche Zeilen geschrieben hat.

Du hattest Code. Er benutzte diesen Code, um seine Aufgabe zu erledigen. Dieser Teil ist vollkommen akzeptabel. Kein Grund, eine Lösung zu schreiben, wenn eine vorhandene Lösung funktioniert.

Sie wollten Anerkennung für den Code. Sie erwähnen, dass er in den Git-Commits, die Ihren Code enthalten, eine Sprache wie Me and I verwendet hat. Git-Commits sollten kein Management-Tool oder ein Tool sein, um geleistete Arbeit zu würdigen. Die verwendete Projektmanagement-Software oder das verwendete System sollte festlegen, wer für was Anerkennung erhält. Wenn Ihnen beide dieselbe Aufgabe zugewiesen wurde, erwartet das Management wahrscheinlich, dass Sie die Ideen und den Code des anderen verwenden. Sie sollten ehrlich gesagt beide auf demselben Ast sein, wenn es sich um eine gemeinsame Aufgabe handelt.

Das eigentliche Problem sind Ihre Bedenken hinsichtlich seiner Fähigkeiten und/oder Arbeitsmoral. Das sollte getrennt von diesem speziellen Vorfall angesprochen werden.

Sie sollten zuerst mit Ihrem Kollegen sprechen. Klingt im Moment so, als wäre das nur einmal passiert. Ich habe oft den Code meiner Kollegen festgeschrieben und habe Kollegen meinen Code festschreiben lassen. Wenn es Sie jedoch betrifft, können Sie ihm gerne sagen, dass der Git-Verlauf wichtig ist und Sie möchten, dass Ihr Name an jeden Ihrer Codes angehängt wird, der übergeben wird. Bestehen Sie darauf, dass Sie nicht wollen, dass er fälschlicherweise beschuldigt wird, wenn es einen Fehler im Code gibt.

Wenn er bei seiner Arbeit weiterhin schlechte Leistungen erbringt, sprechen Sie mit dem Management über seine Leistung (nicht über die Verpflichtungen). Sie können erwähnen, dass seine Commits häufig Ihren Code verwenden, aber machen Sie das nicht zum Punkt, denn daran ist an sich nichts falsch. Sie müssen nur klarstellen, dass sie die Commits nicht verwenden sollten, um seine Fähigkeiten oder Arbeitsmoral zu bewerten, da es sich um Ihren Code handelt.

Ich glaube nicht, dass die Wiederverwendung von Code hier dasselbe ist. Wenn Sie Code auf Github oder Open Source gepostet haben, wird erwartet, dass der Code wiederverwendet wird, wahrscheinlich ohne Ihre Zustimmung, Autorisierung oder Ihr Wissen. Was das OP vorschlägt, ist, dass die Person nicht in der Lage ist, zu arbeiten und einfach ihren Code zu kopieren / wiederzuverwenden, damit ihre Sachen funktionieren. So ähnlich, als ob Sie eine 100-seitige Arbeit im Unterricht fällig hätten, Sie sehen, wie ein Klassenkamerad seine auf dem Lehrerpult einreicht, ohne dass der Lehrer es sieht, und Sie wischen es schnell und löschen seinen Namen und setzen Ihren darauf. Ist das ethisch? Nein nicht wirklich.
Ich sollte auch hinzufügen, dass, wenn Sie Code in ein Arbeitsrepo übertragen, erwartet wird, dass er ohne Ihre Zustimmung oder Bestätigung geändert und möglicherweise wiederverwendet wird. Es wird davon ausgegangen, dass Sie Arbeit zugesagt und möglicherweise sofort geändert haben, um Fehler oder Fehler zu beheben. Es ist nicht ungewöhnlich oder unerwartet, dass jemand nach einem Projekt zurückkehrt, um Fehler zu beheben oder Fehler zu korrigieren oder es sogar umzugestalten/neu zu gestalten, um es für zukünftige Updates lesbarer zu machen. Das schlägt der OP nicht vor.
@Dan OP arbeitet zusammen mit seinem Kollegen an dem Projekt. OP erwartet nicht, dass sein Kollege das Problem löst, das er bereits gelöst hat. Er erwartet Anerkennung für seine Arbeit. Eine bessere Analogie sind Schulgruppenprojekte. Ähnlich wie in der Schule werden die Punkte bei Gruppenprojekten nicht immer gerecht verteilt. Ich glaube nicht, dass unbedingt etwas falsch daran ist, den Code Ihrer Kollegen in einem Gruppenprojekt festzuschreiben. Im Moment ist es ein Einzelfall, und das größere Problem des OP sind die Fähigkeiten oder die Arbeitsmoral seines Kollegen, und er macht sich nur Sorgen, dass sein Kollege dies als Nebeneffekt dieses Kernanliegens maskieren könnte.
@Goose Das ist Arbeit, nicht Schule, es ist nicht "dein Code" und "sein Code". Sie sind beide "der Firmencode". Ich stimme zu, dass es falsch ist, die Arbeit eines anderen anzuerkennen, aber der Grund dafür ist nicht, „weil er gestohlen hat“.
@alephzero Unsicher, ob du Dan antworten wolltest oder ob du meinen Kommentar falsch verstanden hast. So oder so stimme ich allem in Ihrem Kommentar zu und denke, wir sind auf derselben Seite.
+1 Wenn Ihr Unternehmen die Versionskontrolle verwendet, um nach einem Arbeitsvolumen zu suchen, das von Mitgliedern eines Teams erledigt wird, scheint etwas im Unternehmen nicht in Ordnung zu sein - das ist wie das Zählen von Codezeilen, eine bekanntermaßen wenig hilfreiche Praxis! Sie sollten zusammenarbeiten und Code als Team einreichen. Wenn sie jedoch die ihnen zugewiesene Arbeit nicht erledigen, ist das ein Problem, und vielleicht sollten Sie anbieten, sich mit ihnen zusammenzuschließen und zu helfen.

Melden Sie dies der Geschäftsleitung. Lesen Sie auch das Mitarbeiterhandbuch Ihres Unternehmens. Sie haben wahrscheinlich eine Richtlinie zu unethischem Verhalten und wie ihr Verfahren zur Meldung dieses Verhaltens aussieht.

Wenn Sie dies ebenfalls melden, vergewissern Sie sich, dass dies schriftlich / per E-Mail erfolgt, denn wenn Sie später darauf verweisen müssen, sollten Sie sehr gut dokumentieren, dass dies passiert ist und eine Beschwerde eingereicht wurde.

Ich würde hinzufügen, bringen Sie dies GERADE zum Management, bevor Sie Ihrem Kollegen etwas sagen, und übernehmen Sie die Führung, wie Sie damit umgehen.

Ist es Ihr Ziel sicherzustellen, dass Sie für den von Ihnen geschriebenen Code Anerkennung erhalten?

Die Idee, dass Code „Ihr“ ist, ist im Allgemeinen keine gute Art, über die Arbeit nachzudenken, die Sie für das Unternehmen leisten. Der Code, den Sie schreiben, gehört nicht Ihnen; es gehört der firma. Es sollte keinen Unterschied machen, ob der Code von Ihrem Zweig oder von Bobs Zweig übertragen wurde. Sie und Bob haben ein gemeinsames Ziel, alle Aufgaben zu erledigen, die für das Produkt erforderlich sind.

Es ist eine Sache, wenn Ihr Vorgesetzter glaubt, dass Sie nicht Ihren Beitrag leisten, aber Bob tut es, aber Ihre Frage lässt es eher so klingen, als würden Sie sich ausgeraubt fühlen.

Einige der Kommentare haben dies angesprochen; aber die Antworten (insbesondere die akzeptierte Antwort) scheinen in eine ganz andere Richtung zu gehen. Die richtige Vorgehensweise hängt von Ihren tatsächlichen Zielen ab; Aber wenn Ihr Manager nicht die Commit-Protokolle überprüft, um sicherzustellen, dass Sie und Bob beide genug Arbeit leisten, würde ich nicht das Bedürfnis haben, etwas an dieser Situation zu ändern.

Es hört sich so an, als wäre das Schlimmste, was Bob hier getan hat, darin bestanden, Best Practices bei der Verwendung der Quellcodeverwaltung nicht zu befolgen. Das Zusammenführen Ihrer Änderungen hätte einen besseren Revisionsverlauf ermöglicht als das Kopieren/Einfügen Ihrer Änderungen. Es ist vernünftig, ihm dies zu erklären und die Gründe dafür zu erklären. Aber von den Informationen, die wir in der Frage haben; Dies ist kein Problem, bei dem Sie etwas formell aufschreiben und sicherstellen müssen, dass Sie Ihren Manager kopieren. Erwähne es ihm einfach beiläufig.

Dies ist die einzige richtige Antwort hier (bisher). Das Unternehmen hat für die Entwicklung des Codes bezahlt, also besitzt das Unternehmen den Code. So etwas wie „Alices Code“ und „Bobs Code“ gibt es nicht, wenn Alice und Bob von derselben Firma bezahlt werden.

Das klingt nach einer fehlerhaften Zusammenführung; Ich gebe nicht vor, Git gut genug zu verstehen, um genau zu wissen, warum dies auftritt, aber Visual Studio erstellt manchmal Commits im eigenen lokalen Repository, wenn Sie die IDE verwenden, um Zusammenführungskonflikte zu lösen. Dies erscheint im Verlauf so, als ob alle Änderungen in das entfernte Repository übernommen, auf das eigene Repository angewendet, festgeschrieben und dann dieses Commit auf das entfernte Repository angewendet wurden.

Die rationale Erklärung hier ist, dass Bob durch den Zusammenführungsprozess geklickt hat, ohne ihn wirklich zu verstehen, und einen irreführenden Versionsverwaltungsverlauf generiert hat. Gehen Sie von dieser Annahme aus und befragen Sie ihn mit der Absicht, ihn darüber aufzuklären, wie er richtig zusammenführt, und im Zweifelsfall zu entscheiden, ob es sich um einen Fehler handelt.

Identifizieren Sie zunächst , was das Problem ist . Aus Ihrer gestellten Frage geht nicht ganz hervor.

Wenn das Problem darin besteht, dass Ihr Name aus dem Git-Verlauf entfernt (vorausgesetzt, Sie verwenden Git) und durch seinen ersetzt wurde, handelt es sich um ein Haushaltsproblem und wahrscheinlich nicht um ein böswilliges Verhalten Ihres Kollegen. Wenn ein Kollege einen Monat lang an einem Fehler feststeckt, deutet dies darauf hin, dass er bei der Verwendung seiner Tools – einschließlich der Versionskontrolle – etwas eingerostet sein könnte .

Ihr Name sollte auf allen von Ihnen geschriebenen Codes stehen. Dies ist keine Frage des Stolzes oder der Anerkennung, die Ihnen zusteht - Sie müssen diese Historie intakt halten, damit die Leute wissen, wer welche Codezeile geschrieben hat und mit wem sie sprechen können, wenn sie in Zukunft auf Fehler oder seltsame Designentscheidungen stoßen. Wenn Ihr Name nicht mehr darauf steht, dann ist Ihr Kollege derjenige, der Fragen zu Ihrem Code beantwortet und die Schuld für Ihre Fehler übernimmt!

Verwenden Sie Ihre IDE oder ein Quellcodeverwaltungstool, um den Code mit Anmerkungen zu versehen und zu sehen, ob sein Name tatsächlich in jeder Zeile steht. Im Allgemeinen spielt es keine Rolle , wer den Code zusammengeführt hat – sein Name steht nur auf diesem Commit, nicht auf jeder Codezeile in diesem Commit . Das fällt auseinander, wenn er Zweige nicht korrekt zusammengeführt hat, um dies zu erreichen, und das ist etwas, was er richtig machen muss.

Wenn Sie in einer Organisation arbeiten, in der „Wie viel Code ich geschrieben habe“ eine Metrik ist, die sie verfolgen und zu Werbezwecken verwenden, dann sollten Sie dies dem Management mitteilen. Sagen Sie nicht „er hat mich gestohlen“ (Sie wissen nicht, dass er es getan hat), sagen Sie „Ich mache mir Sorgen, dass, wenn Sie sich unsere Versionsverwaltungshistorie ansehen, um unseren Verdienst für Gehaltserhöhungen und Beförderungen zu beurteilen, seine Zusammenführung den Anschein erweckt als ob ich nichts beigetragen hätte".

Dies hängt stark von der Dynamik Ihres Unternehmens ab. In meinem Fall (was meiner Meinung nach die Norm für die meisten professionellen Softwareunternehmen ist) wäre ich halb erfreut, wenn mein Name aus dem von mir geschriebenen Code verschwinden würde ... Jetzt habe ich keine Leute mehr, die mir Fragen zu dummen Entscheidungen stellen ich gemacht in meinem Code Monate zuvor! :)

„Ich wäre halb erfreut, wenn mein Name aus dem Code verschwinden würde, den ich geschrieben habe …“ Hahaha, vielleicht kann ich das ein bisschen zu gut nachempfinden. Ich wurde gerade heute nach einer Code-Änderung im Jahr 2014 gefragt, vor unserem aktuellen Arbeitsverfolgungssystem ... und weil ich für ein Jahr gegangen bin und als Auftragnehmer zurückgekommen bin, habe ich nicht alle meine Tagebücher. Ich konnte es anhand der von mir hinterlassenen Kommentare nachvollziehen ... aber es dauerte einen halben Tag und das Team (hauptsächlich ich) hatte Eier im Gesicht.

Ehrlich gesagt, angesichts der bereitgestellten Details sagt jeder, es zu melden! scheint mir nur eine große Überreaktion zu sein.

Mein Kollege und ich haben über 2 Jahre lang an einem Projekt gearbeitet und Commits hin und her ausgetauscht, und ja , manchmal haben wir den Code des anderen wiederverwendet oder optimiert.

Ich weiß nicht, in welcher Kultur Sie arbeiten, aber wenn es irgendwie die Arbeit in Codezeilen und nicht in Endprodukten und Gesamtbeiträgen definiert, scheint es ziemlich giftig und wettbewerbsfähig zu sein. Mein Rat wäre, dass Sie nicht die Befehlskette hochlaufen und nach irgendeiner Form von Vergeltung suchen. Wenn es für Sie eine so große Sache ist, sprechen Sie mit Ihrem Vorgesetzten darüber, wie Sie die Kreditwürdigkeit für Dinge bestimmen und dann auf die von ihm beschriebene Weise dokumentieren können.

Der Punkt, den ich am meisten ansprechen wollte, war Ihre Beziehung zu Ihrem Kollegen. Meiner ehrlichen Meinung nach, wenn mein Kollege eines Tages auf mich zukam und ausrief: „Verwende nicht meinen Code! Es ist mein Code! würde denken, er wäre ein selbstgefälliger Idiot. Ich würde dies im Hinterkopf behalten, da aus der Frage nicht klar ist, ob sie Ihren Code wirklich gestohlen haben oder ob sie vielleicht nur Änderungen auf seltsame Weise zusammengeführt haben.

Die Anschuldigung (was eine große Anschuldigung ist) - wenn es Ihre berufliche Beziehung nicht vollständig ruiniert, würde es mit Sicherheit ihre persönliche Meinung von Ihnen senken. Keine große Sache, wenn du recht hast. Ich bin ein Fan von „Du schaufelst dir dein eigenes Grab“-Denken – aber wenn du dich irrst , könnte der Schaden für deine Arbeitsbeziehung ziemlich groß sein. Büropolitik ist eine heikle Sache!

Wenn Sie sich jetzt absolut sicher sind, dass er stiehlt und Dinge anrechnet, die er nicht getan hat, können Sie sich gerne an Ihren Vorgesetzten wenden und die entsprechenden Maßnahmen ergreifen, um sicherzustellen, dass er für diese Art von Verhalten gerügt wird – jedoch, wenn Sie bin mir nicht ganz sicher , überlege vielleicht nochmal. Plagiate sind nicht leichtfertig zu beanstanden, besonders wenn sie Ihr tägliches Leben für längere Zeit beeinträchtigen können.

Metainformationen wie die Urheberschaft existieren in einem Versionskontrollsystem wie Git nicht so sehr, um den Besitz nachzuverfolgen , sondern um besser zu verstehen , wie etwas so geworden ist, wie es ist.

Während einfache Flows Commits mit individueller Urheberschaft zusammenführen, gibt es viele Fälle, in denen dies nicht funktioniert oder nicht die vollständige Geschichte in den Feldern mit festgelegtem Zweck eines Commits erfasst.

Etwas wie das Refactoring oder sogar das Anwenden neu etablierter Whitespace-Regeln auf einen Codeblock beinhaltet das, was Git als neue Urheberschaft betrachtet, da Git nur wörtliche Details versteht, nicht die Bedeutung. Und das nur in Fällen, in denen der Code weiterhin in seiner ursprünglichen Rolle und am genauen Dateispeicherort verwendet wird.

Viele andere Fälle, wie zum Beispiel das Basieren der Lösung eines neuen Problems auf Code, der von der Lösung eines älteren Problems innerhalb der Codebasis eines Unternehmens kopiert wurde, sieht für alle Welt nach einem VCS wie einer echten, neuen Urheberschaft aus.

Obwohl dies alles andere als perfekt ist, versuche ich, wenn ich einen Commit erstelle, der größtenteils auf vorhandener Arbeit basiert (insbesondere auf der Arbeit von jemand anderem, die entweder umgezogen oder grundlegend überarbeitet wurde), seinen Ursprung in der Commit-Nachricht zu erwähnen. Das ist etwas zu fair, aber genauso viel oder mehr, um eine Aufzeichnung der Beziehung zu anderem Code zu erstellen . Wenn also beispielsweise ein Fehler in der neuen Verwendung gefunden wird, lohnt es sich zu prüfen, ob er auch dort existiert, wo der Code kopiert wurde.

Angesichts dessen könnte es eine gute Vorgehensweise sein, zu versuchen, einen Codeüberprüfungsprozess zu verwenden, um die endgültige Zusammenführung des umstrittenen Codes unter einer aussagekräftigeren Nachricht durchzuführen, die seine tatsächlichen Ursprünge beschreibt. Und um dieses Argument nicht so sehr vorzubringen, um das "Eigentum" an Beiträgen zu bewahren, sondern um das Wissen darüber zu bewahren, woher der Code stammt, in welcher Beziehung er zu anderem Code steht, und um eine vollständigere Liste zu haben, von wem man Beiträge einholen kann Fall von Schwierigkeiten .

Beginnen Sie eine Diskussion mit Ihrem Kollegen und Vorgesetzten darüber, was tatsächlich passiert, aber beschuldigen Sie sie nicht ihrer Absicht.

Was tatsächlich passiert, ist, dass sie Ihren Code zusammengeführt haben, als wäre es ihr eigener. Dies könnte aus persönlicher Rache geschehen sein, um Sie wie einen Idioten aussehen zu lassen, aber das ist eine Anschuldigung der Absicht, die viel schwieriger zu beweisen ist, und basierend auf dem, was Sie gepostet haben, gibt es nichts, was auf eine böswillige Absicht Ihres Kollegen hindeutet .

Konzentrieren Sie sich darauf, dies zu einem Lehrmoment zu machen, indem Sie seine Unwissenheit über die korrekte Verwendung von Git unterstellen. Git bietet viele Möglichkeiten, um es einem Entwickler zu ermöglichen, den Code eines anderen Entwicklers wiederzuverwenden, während die Urheberschaft erhalten bleibt. Die beiden wichtigsten Werkzeuge hier sind der Merge- und der Cherry-Pick-Befehl.

Weisen Sie sie darauf hin, dass die Erhaltung von Metadaten und der Urheberschaft des Verlaufs im Projekt wichtig ist.

Ich weiß nicht, ob Sie das bemerkt haben, aber wenn Sie ein Quellcode-Kontrollsystem haben und zwei Personen identische Änderungen vornehmen, dann werden Sie viele "Merge-Konflikte" bekommen, die das Mergen zu einer zeitaufwändigen und fehleranfälligen Operation machen.

So kann man beim nächsten Teammeeting, wo allerlei besprochen wird, sagen „... und in Zukunft würde ich es begrüßen, wenn niemand unvollständige Änderungen aus meinem Branch übernimmt und in den Haupt-Branch gemergt. Ich habe eine Stunde verschwendet und stundenlange Arbeit zur Lösung von Merge-Konflikten aus diesem Grund". Gut möglich, dass Ihr Chef dann fragt, wer so einen Quatsch gemacht hat, und jetzt können Sie dem Chef Namen nennen, ohne wie ein Spitzel dastehen zu müssen.

Führen Sie seinen Code zusammen, indem Sie angeben, dass er ihn geschrieben hat. Das Managen von Fusionen selbst ist eine gute Strategie. scheint nicht zu wissen, wie GIT funktioniert, und hat vergessen, sich mit Ihren Änderungen zu synchronisieren. Commits mit dem gesamten Code anderer Personen werden automatisch von Tools wie dem Quellbaum generiert, falls Personen eine schlechte Zusammenführungsstrategie verwenden

Was falsch ist, ist die Angabe von "my code" in der Comunità-Beschreibung.

Wenn ich einen Tag lang von einem Fehler getroffen werde (ein Monat scheint zu viel. Ich habe nie einen Monat an einem Fehler gearbeitet) und ich Änderungen zusammenführe, sage ich ausdrücklich, dass die Zusammenführung meinen Bugfix plus vorherigen Code von anderen enthält, und selbst wenn ich dies tue, tut es das nicht sieht so aus, als hätte ich Code von anderen übertragen.

Wenn Ihr Mitarbeiter an einem Zweig arbeitet, sollte er zuerst den Hauptzweig mit seinem eigenen zusammenführen. Prüfen. Führen Sie dann seinen Zweig wieder zusammen. Dadurch wird der Verlauf Ihrer Änderungen gespeichert.

Wenn er anfängt, Code aus Ihrem Zweig zu kopieren, ohne ihn zusammenzuführen und dann einzureichen, geht es ihm noch schlechter. Er arbeitet an der Versionierung, die möglicherweise neue Fehler einführt.

Ich würde eine Verpflichtungsrichtlinie einführen, die befolgt werden muss, und jeden dazu zwingen, die Richtlinie zu respektieren. Ich würde mir eher Sorgen um seine GIT-Fähigkeiten machen. Es könnte Chaos anrichten

Ja, das ist mir einmal mit einem sehr ungewöhnlichen Kollegen passiert. Eines Tages sagte mir ein QA-Mitarbeiter, mein Code sehe genau so aus wie dieser andere Kollege. Ich habe mich bei GitHub angemeldet und bemerkt, dass der Code meinem auf unheimliche Weise ähnlich ist, aber ich habe es zuerst abgewischt, dass der Code vielleicht einfach derselbe ist, da wir mehrere Websites hosten, die dieselbe Datei teilen, da er dasselbe tut.

Im Laufe der Zeit beobachtete ich, dass die Kollegin sagte, sie arbeite am „Refaktorisieren des Codes“ während der täglichen Standups bis zum letzten Tag des Sprints, dann sagte sie, ihr Code sei am letzten Tag nicht fertig und brauche einen zusätzlichen Tag, und dann mysteriöserweise am nächsten Tag wurden Hunderte von Codezeilen auf einen Pull-Request hochgeladen. Ich habe mir den Code angesehen und festgestellt, dass der Code meinem ähnlich ist, bis hin zu einem Rechtschreibfehler, den ich gemacht habe. Dann wurde mir klar, dass die Person wartete, bis ich meinen Ast hochschob, und sie beobachtete und kopierte Dinge davon.

Ich war genauso wütend wie du. Meistens, weil der Mitarbeiter nicht zu mir kam, um zu fragen, was ich gerne helfen oder anleiten würde. Das war einer der wenigen Gründe, warum ich mich entschied, das Unternehmen zu verlassen, nachdem ich es einem Manager vorgestellt hatte, dem es anscheinend egal war. Mein Rat ist, es einem Manager vorzulegen und einen Rechtschreibfehler einzubauen, von dem Sie beweisen können, dass er nicht zufällig kopiert werden konnte. Auf diese Weise können Sie sagen, dass es auf keinen Fall ein reiner Zufall ist.

Ihr hattet also beide genau die gleiche Aufgabe? Ich kann verstehen, dass Hausaufgaben von Studenten kopiert werden, aber in einem Unternehmen arbeiten die Leute normalerweise an verschiedenen Dingen, die zu etwas Größerem kombiniert werden können.
Ich stimme sehr zu, dass dies mehr Erklärung benötigt.
Wenn sie ein Refactoring durchgeführt hätten, sollte es wirklich offensichtlich sein - große Änderungen mit Ausnahme Ihrer. Möglicherweise müssen sie auch Ihre Änderungen in ihre integrieren, weshalb es so aussah, als würden sie Ihren Code einchecken. Ihr solltet wahrscheinlich häufiger miteinander synchronisieren – ich versuche, mich zumindest täglich zu integrieren – oft mehrmals am Tag.
@fafl Das Unternehmen teilt sich eine Website mit mehreren Ebenen, also manchmal ja, deshalb dachte ich zuerst, es sei nur ein Zufall. Aber manchmal ist es ein separates Projekt. Wie auch immer, die Person hat nie mit mir gesprochen und einfach gewartet, bis ich mit dem Kopieren des Codes fertig war. Wir müssen individuell an unserem Sprint arbeiten, aber Zusammenarbeit ist ein Muss mit einer offensichtlichen gemeinsamen Codebasis. Ich denke, dass dies viel anders ist als eine Teamzusammenarbeit oder Teamarbeit, da der Einzelne während der täglichen Standups nie Hindernisse erwähnt und während des gesamten Sprints einfach nichts getan hat bis Leute (mich eingeschlossen) eine Pull-Anfrage gestellt haben.