threads / discuss / 35238

rcs

Subject: rcs

## tl;dr

6 messages between Oct 29, 2013 and Nov 6, 2013.

replies: 5people: 5as markdown or json

Finnerty, James M Mr CTR USA USASOC-SOAR· Oct 29, 2013, 16:35 UTC · lore

Hi. I'm going to attempt to import a git database into Razor which is linux rcs based. Does the linux version of git use rcs ?

 Thanks Jim
Jim Finnerty
ECS, Inc.
Comm: (270) 798-1386, Fax: (270)798-7724
Cell: (570) 498-8499
CAUTION: This message may contain competitive, sensitive or other
non-public information not intended for disclosure outside official
government channels.  Do not disseminate this message outside of
official channels.  If you received this message in error, please notify
the sender by reply e-mail and delete all copies of this message." 

"STATEMENT OF LIMITATION OF AUTHORITY: You are hereby notified that I do not have the authority to direct you in any way to alter your contractual obligations. Further, if your U.S. Army customer, as the result of the information obtained from discussions or emails, does desire to alter your contract requirements, changes will be issued in writing and signed by the contracting officer. You should take no action on any change unless and until you receive such a contract modification or written direction by the Contracting Officer."

Jeff King· Oct 29, 2013, 18:16 UTC · re: Finnerty, James M Mr CTR USA USASOC-SOAR · lore

Re: rcs

On Tue, Oct 29, 2013 at 11:35:21AM -0500, Finnerty, James M Mr CTR USA USASOC-SOAR wrote:
> Hi. I'm going to attempt to import a git database into Razor which is
> linux rcs based. Does the linux version of git use rcs ?

No, the formats are completely different, and you will have to translate. We don't usually get requests to go from git to rcs; it usually goes the other way. :)

I don't know offhand of a tool that does it out of the box. It should be possible to generate the RCS files directly from the "git log" data (though RCS does not use unified diff for storage, but rather "ed" commands, so you'd have to translate there). A slower simpler way would be to just "replay" the git history, committing to rcs at each step. That might look something like the hacky, largely untested script below:

-- >8 -- #!/bin/sh

# note that this does not handle filenames which need quoting.
changed_files() {
  git diff-tree -r --name-only "$1" | tail -n +2
}

# Look at each commit in chronological order; note # that this will linearize your history, as this # script does not know about branches at all. git rev-list --reverse HEAD | while read rev; do

  # take a lock on each file we are about to update
  rcs -l $(changed_files $rev)
  # update the working tree to this revision
  git checkout -fq $rev
  # get commit date in iso8601
  date=$(git log -1 --format=%ai)
  # get author "login". This just pulls the username from
  # the email address; you may also want to map email
  # addresses to logins via a file.
  login=$(git log -1 --format=%ae | cut -d@ -f1)
  # original commit message
  msg=$(git log -1 --format=%B)
  # now we're ready to checkin
  ci -w"$login" -d"$date" -m"$msg" $(changed_files $rev) </dev/null
done
-- 8< --

There are lots of ways it can go wrong (and I tried to note them above), but it may be enough for a simple history.

-Peff
Finnerty, James M Mr CTR USA USASOC-SOAR· Oct 29, 2013, 19:17 UTC · re: Jeff King · lore

RE: rcs

Jeff,
  Thanks.  We have several systems using Razor right now. So we are trying to get all the systems into one CM system. Razor is just a gui that uses rcs commands. Once we get everything synced we will explore our options for a complete development CM system.
 Jim
-----Original Message-----
From: Jeff King [mailto:peff@peff.net] 
Sent: Tuesday, October 29, 2013 1:16 PM
To: Finnerty, James M Mr CTR USA USASOC-SOAR
Cc: git@vger.kernel.org; Hawkins, Lisa M Mrs CTR USA USASOC-SOAR
Subject: Re: rcs
On Tue, Oct 29, 2013 at 11:35:21AM -0500, Finnerty, James M Mr CTR USA USASOC-SOAR wrote:
> Hi. I'm going to attempt to import a git database into Razor which is 
> linux rcs based. Does the linux version of git use rcs ?
No, the formats are completely different, and you will have to translate.  We don't usually get requests to go from git to rcs; it usually goes the other way. :)

I don't know offhand of a tool that does it out of the box. It should be possible to generate the RCS files directly from the "git log" data (though RCS does not use unified diff for storage, but rather "ed" commands, so you'd have to translate there). A slower simpler way would be to just "replay" the git history, committing to rcs at each step. That might look something like the hacky, largely untested script below:

-- >8 -- #!/bin/sh

# note that this does not handle filenames which need quoting.
changed_files() {
  git diff-tree -r --name-only "$1" | tail -n +2 }

# Look at each commit in chronological order; note # that this will linearize your history, as this # script does not know about branches at all. git rev-list --reverse HEAD | while read rev; do

  # take a lock on each file we are about to update
  rcs -l $(changed_files $rev)
  # update the working tree to this revision
  git checkout -fq $rev
  # get commit date in iso8601
  date=$(git log -1 --format=%ai)
  # get author "login". This just pulls the username from
  # the email address; you may also want to map email
  # addresses to logins via a file.
  login=$(git log -1 --format=%ae | cut -d@ -f1)
  # original commit message
  msg=$(git log -1 --format=%B)
  # now we're ready to checkin
  ci -w"$login" -d"$date" -m"$msg" $(changed_files $rev) </dev/null done
-- 8< --
There are lots of ways it can go wrong (and I tried to note them above), but it may be enough for a simple history.
-Peff
Jakub Narębski· Nov 5, 2013, 14:56 UTC · re: Finnerty, James M Mr CTR USA USASOC-SOAR · lore

Re: rcs

Finnerty, James M Mr CTR USA USASOC-SOAR wrote
Show 7 quoted lines
> Jeff King [mailto:peff@peff.net]wrote:
>> On Tue, Oct 29, 2013 at 11:35:21AM -0500, Finnerty, James M Mr CTR USA USASOC-SOAR wrote:
>>
>>> Hi. I'm going to attempt to import a git database into Razor which is
>>> linux rcs based. Does the linux version of git use rcs ?
>>
>> No, the formats are completely different, and you will have to translate.
 >> We don't usually get requests to go from git to rcs; it usually goes
 >> the other way. :)
 >
 >    Thanks.  We have several systems using Razor right now. So we are
 > trying to get all the systems into one CM system. Razor is just a gui
 > that uses rcs commands. Once we get everything synced we will explore
 > our options for a complete development CM system.

The problem with using RCS as sync (as base) is that it is least powerfull of VCS, and as far as I know do not offer place to store extra information, so conversion from Git to RSS will lose some information (committership, signed commits and signed merges, signed tags, etc.).

There is a tool to create fast-import stream from RCS repository, but I am not sure if there is reverse (fast-import is a common intermediate fairly VCS_agnostic representation used for fast conversion between different version control systems).

-- 
Jakub Narębski
Junio C Hamano· Nov 6, 2013, 17:28 UTC · re: Jakub Narębski · lore

Re: rcs

Jakub Narębski <jnareb@gmail.com> writes:
Show 22 quoted lines
> Finnerty, James M Mr CTR USA USASOC-SOAR wrote
>> Jeff King [mailto:peff@peff.net]wrote:
>>> On Tue, Oct 29, 2013 at 11:35:21AM -0500, Finnerty, James M Mr CTR USA USASOC-SOAR wrote:
>>>
>>>> Hi. I'm going to attempt to import a git database into Razor which is
>>>> linux rcs based. Does the linux version of git use rcs ?
>>>
>>> No, the formats are completely different, and you will have to translate.
>>> We don't usually get requests to go from git to rcs; it usually goes
>>> the other way. :)
>
>>
>>    Thanks.  We have several systems using Razor right now. So we are
>> trying to get all the systems into one CM system. Razor is just a gui
>> that uses rcs commands. Once we get everything synced we will explore
>> our options for a complete development CM system.
>
> The problem with using RCS as sync (as base) is that it is least
> powerfull of VCS, and as far as I know do not offer place to store
> extra information, so conversion from Git to RSS will lose some
> information (committership, signed commits and signed merges, signed
> tags, etc.).

You forgot to mention another important one: atomicity of commits across the entire tree. The best you could do would be to assume that changes in such a collection of RCS ,v files from a Git export to different files with the same timestamp and by the same author are likely to have come from the same Git commit, and that the timestamp monotonically increases, in order to stitch the history back together.

← back to recent threads