git/list[1] front-page[2] threads[3] people[4] search[5] about
 

RE: Dealing with corporate email recycling

From
rsbecker@nexbridge.com <rsbecker@nexbridge.com>
Date
Mar 13, 2022, 15:02 UTC
Message-ID
<01f301d836eb$5c7a6810$156f3830$@nexbridge.com>
In-Reply-To
<87v8whap0b.fsf@gmail.com>
On March 13, 2022 10:41 AM, Sean Allred wrote:
Show 25 quoted lines
><rsbecker@nexbridge.com> writes:
>> (I am a little nervous about this advice, hoping others will chime in
>> and correct anything wrong here)
>>
>> While this will change the commit hashes, AFAIK, the other metadata is
>> preserved, including date, author, and committer. Set up the specific
>> keys/settings in ssh-agent and the user.signingKey value, then:
>>
>> git filter-branch --commit-filter 'git commit-tree -S "$@";'
>> <FROM-COMMIT>..<TO-COMMIT>
>>
>> Others might have a better way of doing this or may tell me this will
>> not work. Test this before you do it. I have not done this operation
>> before. You do need to start from the oldest commit going forward
>> otherwise I think that filter-branch will (should!) invalidate child
>> commits. I suspect this is going to be a rather lengthy script to build and run.
>
>Given the size of our history (several orders of magnitude larger than linux.git),
>using git-filter-branch after the fact is certainly not ideal.  The replay already takes
>a week to run (we're IO-bound).  We'd rather want to extend git-fast-import to
>allow signing commits instead
>-- which comes back to our shared 'nervousness' about this approach in
>general: I don't know that Git should endorse this as a standard option.
>
>But yes -- hoping others can chime in with more thoughts :-)
I have another reluctant suggestion, but it depends on your industry, regulations, and other factors. In some sectors, there is a requirement to keep only some period of time worth of history. In fact, in some settings, keeping user identifying information beyond, say 7 years, actually is problematic. Pruning your history may be not only an option but required. An alternative is to use filter-branch to essentially tokenize the identities of past authors and keep those in a electronic vault somewhere. I have customers who are interpreting GDPR-like rules just such as situation, where employees gone 7 years ago and cannot be retained, by name, in the repos. I am not personally happy about that, because my own repo-OCD demands that I know exactly who did what until the end of time, but according to them, it actually violates the local regulations. I'm sure you have had conversations with lawyers, yes? ☹
Previous: Sean AllredNext: Sean Allred
Message 7 of 28 in “Dealing with corporate email recycling”
  1. Sean AllredMar 12, 2022
  2. Junio C HamanoMar 13, 2022
  3. rsbecker@nexbridge.comMar 13, 2022
  4. Sean AllredMar 13, 2022
  5. rsbecker@nexbridge.comMar 13, 2022
  6. Sean AllredMar 13, 2022
  7. rsbecker@nexbridge.comMar 13, 2022
  8. Sean AllredMar 13, 2022
  9. Philip OakleyMar 13, 2022
  10. Sean AllredMar 13, 2022
  11. Junio C HamanoMar 13, 2022
  12. rsbecker@nexbridge.comMar 13, 2022
  13. Junio C HamanoMar 14, 2022
  14. Philip OakleyMar 14, 2022
  15. Junio C HamanoMar 14, 2022
  16. Philip OakleyMar 14, 2022
  17. Sean AllredMar 15, 2022
  18. Philip OakleyMar 15, 2022
  19. Philip OakleyMar 13, 2022
  20. Sean AllredMar 13, 2022
  21. Philip OakleyMar 14, 2022
  22. Ævar Arnfjörð BjarmasonMar 13, 2022
  23. brian m. carlsonMar 13, 2022
  24. rsbecker@nexbridge.comMar 13, 2022
  25. rsbecker@nexbridge.comMar 13, 2022
  26. Sean AllredMar 13, 2022
  27. Sean AllredMar 15, 2022
  28. Peter KreftingMar 18, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.