cgit raw url

412 views
Skip to first unread message

Ryan Raasch

unread,
Jun 1, 2012, 5:33:33 AM6/1/12
to revie...@googlegroups.com
Hello,

I have now decided it easier to use the cgit interface for the backend. However, the
raw url format does not include the parameter for the branch to be diffed (in git)

http://cgit.server/repos/plain/<filename>?h=<branch>&id=<revision>

I cannot find where the branch can be specified. Is this possible?

I guess also (now that i think about it), uploading a diff does not ask which branch the
diff should be based upon...

BTW i am using v1.6.6

Cheers,
Ryan

Christian Hammond

unread,
Jun 1, 2012, 12:54:08 PM6/1/12
to revie...@googlegroups.com, revie...@googlegroups.com
The branch doesn't come into play. All that's needed for checking out a file is a filename and revision.

Something like cgit is actually required for remote Git repositories, as Git has no ability to fetch individual blobs remotely.

Christian


--
Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/
Happy user? Let us know at http://www.reviewboard.org/users/
-~----------~----~----~----~------~----~------~--~---
To unsubscribe from this group, send email to reviewboard...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/reviewboard?hl=en

Ryan Raasch

unread,
Jun 2, 2012, 5:21:08 AM6/2/12
to revie...@googlegroups.com


On Friday, June 1, 2012 6:54:08 PM UTC+2, Christian Hammond wrote:
The branch doesn't come into play. All that's needed for checking out a file is a filename and revision.

Something like cgit is actually required for remote Git repositories, as Git has no ability to fetch individual blobs remotely.

Yea, that makes sense. But when I am using post-review to generate a diff on a local branch to a remote branch, the diff is correct. However, when the server tries to apply the patch, it fails. The server returns an error that one of the files is not found in the remote branch. After investigating this,
it turns out that the master on remote repos does not have that file, and the remote branch does. So it seems that the patch was applied to the default branch, master on the server (which is what cgit delivers in the RAW URL without the branch specification).

The diff generated by post-review is correct (diff is created from the correct remote branch to local branch), but the apply on the server side seems to not apply the diff on the correct branch. What I cannot understand is that once the diff is generated on the client side, the branch information is lost. How does the server know which branch to apply the received patch (through the cgit interface)? BTW, everything worked when I used a local clone residing on the server.

Ryan
  
Christian



On Jun 1, 2012, at 2:33, Ryan Raasch <ryan....@gmail.com> wrote:

Hello,

I have now decided it easier to use the cgit interface for the backend. However, the
raw url format does not include the parameter for the branch to be diffed (in git)


I cannot find where the branch can be specified. Is this possible?

I guess also (now that i think about it), uploading a diff does not ask which branch the
diff should be based upon...

BTW i am using v1.6.6

Cheers,
Ryan

--
Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/
Happy user? Let us know at http://www.reviewboard.org/users/
-~----------~----~----~----~------~----~------~--~---
To unsubscribe from this group, send email to reviewboard+unsubscribe@googlegroups.com

Christian Hammond

unread,
Jun 2, 2012, 5:53:02 AM6/2/12
to revie...@googlegroups.com
Hi Ryan,

Branches don't matter in Git at this point. A branch is just a handy tag that gives a human-readable name to a SHA1 and updates on each commit. From the point of view of anything that needs to interact with files on Git, the only information needed are a SHA1 and a filename. A branch will never come into play here.

What it sounds like is that your remote repo isn't updated properly. Perhaps you have changes in your master that aren't pushed, and the diff is therefore based on a revision that is not available to Review Board by way of cgit?

Christian

--
Christian Hammond - chi...@chipx86.com
Review Board - http://www.reviewboard.org
VMware, Inc. - http://www.vmware.com


To unsubscribe from this group, send email to reviewboard...@googlegroups.com

Ryan Raasch

unread,
Jun 2, 2012, 8:27:35 AM6/2/12
to revie...@googlegroups.com


On Saturday, June 2, 2012 11:53:02 AM UTC+2, Christian Hammond wrote:
Hi Ryan,

Branches don't matter in Git at this point. A branch is just a handy tag that gives a human-readable name to a SHA1 and updates on each commit. From the point of view of anything that needs to interact with files on Git, the only information needed are a SHA1 and a filename. A branch will never come into play here.

Yes, you is right. I have not dug so much before into SHA1 numbers and git... 

What it sounds like is that your remote repo isn't updated properly. Perhaps you have changes in your master that aren't pushed, and the diff is therefore based on a revision that is not available to Review Board by way of cgit?

 
However, this is the breakdown...

For a particular file, post-review (git diff ), generates a patch for a file x. This contains a parent SHA id and the new sha id, right?

index ebd63fe54cf46839f6ca5582699b249783aca538..3ce9a396ebbda257d1625e9101ca0f9a27d9ed29

The log for reviewboard shows that there is a fetch for ebd63fe54cf46839f6ca5582699b249783aca538 id, but cgit returns "not found" for that
file.... I can see in the HTML formatted cgit site, ebd63fe54cf46839f6ca5582699b249783aca538  exists for the blob link.

Just for clarity

************************************** Reviewboard.log ***************************************************
2012-06-02 14:12:10,932 - ERROR - 404

*************************************** post-review ********************************************************
rra@pc-9999  (branchX)$ post-review -r 36 --debug --parent origin/branchX  --output-diff
>>> RBTools 0.4.1
>>> Home = /home/rra
>>> HTTP GETting api/
>>> Using the new web API
diff --git a/package/libxml2/Config.in b/package/libxml2/Config.in
index ebd63fe54cf46839f6ca5582699b249783aca538..e66740a4dd4263112d10dd0eba0d5c534437a842 100644
--- a/package/libxml2/Config.in
+++ b/package/libxml2/Config.in
@@ -4,3 +4,9 @@ config BR2_PACKAGE_LIBXML2
          XML C Parser

          http://xmlsoft.org/
+
+config BR2_PACKAGE_LIBXML2_MINIMAL
+       bool "libxml2 minimal"
+       depends on BR2_PACKAGE_LIBXML2
+       help
+         Build a minimally sized library.



I am digging further, but is there anything blatantly obvious I am overlooking? This really doesn't make sense...


Ryan

Ryan Raasch

unread,
Jun 2, 2012, 9:22:59 AM6/2/12
to revie...@googlegroups.com
Ok. I am learning all the time. The diffs in GIT use the index
Ok. I am learning.... I realize now that the diff patch that is generated contains the index's files SHA1s. Therefore
the SHA cannot be found in the .git with a simple grep....Furthermore, the cgit interface, or rather my setup does
not provide a url for accessing the versions with the SHA from the index file. Any ideas on how to do this?

Ryan Raasch

unread,
Jun 2, 2012, 10:10:42 AM6/2/12
to revie...@googlegroups.com
Well... I solve it... It is a matter of difference in the cgit url from plain to blob.

It seems when using commit id's http://git.server/plain/file?=<commit id>, where the index
ids pulled from the diff must be http://git.server/blob/?=<index id>

Thanks,
Ryan
Reply all
Reply to author
Forward
0 new messages